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

MongoDB聚合:能否在$cond操作符中使用$regex?

解决MongoDB聚合$cond中使用正则匹配的问题

嘿,你碰到的这个问题很常见——直接在$eq里嵌套$regex确实行不通,因为$eq是用来做严格相等判断的,没法直接处理正则匹配。不过MongoDB专门提供了聚合操作符$regexMatch来解决这种场景,咱们来调整下你的查询:

正确的查询写法

db.captions.aggregate([
  {
    $project: {
      "videoId": "$videoId",
      "plainText": "$plainText",
      "Group1": {
        $cond: {
          if: {
            $regexMatch: {
              input: "$plainText",
              regex: /leave\sa\scomment/i
            }
          },
          then: "Yes",
          else: "No"
        }
      }
    }
  }
])

关键说明

  • $regexMatch是聚合阶段专门用于正则匹配的操作符,它接收三个主要参数:
    • input:指定要进行匹配的字段(这里是$plainText)
    • regex:你的正则表达式(支持字面量或字符串形式,比如"leave\\sa\\scomment")
    • options:可选,比如"i"表示忽略大小写,你也可以把它直接写在正则里(像示例里的/.../i)
  • 这个操作符会返回布尔值,刚好能被$cond用来判断分支逻辑。

额外小提示

如果需要匹配多个正则条件,还可以结合$or/$and来组合多个$regexMatch,比如:

Group1: {
  $cond: {
    if: {
      $or: [
        { $regexMatch: { input: "$plainText", regex: /leave\sa\scomment/i } },
        { $regexMatch: { input: "$plainText", regex: /subscribe/i } }
      ]
    },
    then: "Yes",
    else: "No"
  }
}

这样就能实现你想要的分组逻辑啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:49:19