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

MongoDB聚合$match如何判断字段值包含任意指定字符串

MongoDB聚合管道$match阶段多关键词匹配实现

针对数组类型的key2字段,要实现「任意元素包含指定多个关键词之一即返回文档」的需求,有两种常用实现方式:

方式1:多分支正则直接匹配

适合固定关键词的场景,利用正则的|或逻辑直接编写匹配规则,MongoDB会自动遍历数组元素做匹配:

{
  $match: {
    key2: /Mermaid \/ Fairy|Superhero/
  }
}

注意点:

  • 关键词中的/是正则特殊字符,需要加反斜杠\转义,否则会触发正则语法错误
  • 原写法中前后的.*是冗余内容,正则默认执行子串匹配,不需要额外加前后通配符

方式2:$in操作符结合正则

适合关键词动态传入的场景,不需要手动拼接正则字符串,可维护性更强:

{
  $match: {
    key2: {
      $in: [
        /Mermaid \/ Fairy/,
        /Superhero/
      ]
    }
  }
}

该写法逻辑为:判断key2数组中是否存在至少一个元素,命中$in数组内任意一个正则规则,命中即返回对应文档。动态传参时只需要把传入的关键词列表逐个转为正则对象,塞入$in的规则数组即可。

补充:精确匹配场景优化

如果你需要的是数组元素和关键词完全相等(不允许前后有多余字符),直接用字符串+$in即可,性能远高于正则匹配:

{
  $match: {
    key2: {
      $in: ['Mermaid / Fairy', 'Superhero']
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:24:19