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

MongoDB中如何判断某字段字符串值为另一字段的子串(不区分大小写)

方案1(适用于MongoDB 4.0及以上版本)

直接使用聚合操作符$regexMatch实现不区分大小写的字段间子串匹配:

db.test.aggregate([
  {
    $match: {
      $expr: {
        $regexMatch: {
          input: "$Text",
          regex: "$Text1",
          options: "i"
        }
      }
    }
  }
])

参数说明:

  • $expr:支持在匹配条件中引用文档自身的字段值
  • options: "i":开启正则匹配的不区分大小写规则

方案2(兼容MongoDB 4.0以下版本/避免正则特殊字符影响)

将两个字段统一转为小写后,通过位置查找判断是否包含对应子串:

db.test.aggregate([
  {
    $match: {
      $expr: {
        $ne: [
          { $indexOfBytes: [ { $toLower: "$Text" }, { $toLower: "$Text1" } ] },
          -1
        ]
      }
    }
  }
])

逻辑说明:

  • $toLower将两个字段的内容全部转为小写,实现不区分大小写的匹配前提
  • $indexOfBytes返回子串首次出现的位置,返回值为-1代表不存在对应子串,不等于-1即代表匹配成功

注意事项

如果你的Text1字段可能包含.、*、+、?等正则特殊字符,优先使用方案2,避免方案1出现非预期的正则匹配结果。

内容的提问来源于stack exchange,提问作者Jay Park

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:21:03