You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置ArangoDB数据库或集合为大小写不敏感

ArangoDB 无需lower()/upper()实现大小写不敏感的方案

ArangoDB没有全局开关能直接把整个数据库或集合设为全局大小写不敏感,但可以通过以下两种实用方式实现类似效果:

1. 给字段创建大小写不敏感索引

这是最直接的方案——针对需要模糊大小写匹配的字段,创建带collation: "ci"(case-insensitive)的索引,查询时不用转换大小写就能匹配到不同大小写的内容。

举个实操例子:

// 先创建集合
db._create("users");
// 给name字段建大小写不敏感的哈希索引
db.users.ensureIndex({ type: "hash", fields: ["name"], collation: "ci" });

之后查询时直接写目标字符串就行,自动忽略大小写:

// 能匹配到name为"Alice"、"alice"、"ALICE"的所有文档
db.users.byExample({ name: "alice" });

注意:这种方式是针对单个/多个字段的,不是整个集合,但可以给需要的字段逐个设置。

2. 写入时统一转换大小写

如果需要让集合里的特定字段统一大小写(比如全小写),可以在写入文档时自动转换,查询时直接用统一的大小写查询即可。

可以通过集合的自定义预处理规则实现自动转换:

db._create("products", {
  schema: {
    rule: {
      type: "object",
      properties: {
        productName: { type: "string" }
      },
      required: ["productName"]
    },
    level: "strict",
    // 写入前自动把productName转成小写
    preprocess: function(doc) {
      if (doc.productName) {
        doc.productName = doc.productName.toLowerCase();
      }
      return doc;
    }
  }
});

这样所有写入的productName都会是小写,查询时直接用小写字符串搜索,完全不用处理大小写问题。

额外提醒

  • 目前没有数据库级别的全局大小写不敏感设置,所有方案都是局部针对字段或集合处理。
  • 大小写不敏感索引会比普通索引占用更多存储空间,查询性能也略低,需要根据业务场景权衡使用。

内容的提问来源于stack exchange,提问作者Sergio R Pires

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:27:41