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

MongoDB触发器使用$or运算符后被暂停,报Unknown operator $or错误

MongoDB触发器匹配表达式错误修复

你的触发器报错是因为$or运算符的使用位置不对——MongoDB查询运算符不能直接嵌套在updateDescription.updatedFields对象内部,这个字段本身是存储被更新字段的键值对集合,正确的逻辑应该是先确认state字段被更新,再验证它的新值是否在指定范围内。

正确的匹配表达式

直接针对被更新的state字段做值校验即可,用$in替代$or更简洁高效:

{
  "updateDescription.updatedFields.state": {
    "$in": ["LIVE", "OFFLINE", "DRAFT"]
  }
}

更严谨的写法(可选)

如果需要确保触发器仅在state字段被更新时触发(排除其他字段更新的情况),可以加上对updatedFields的存在性校验:

{
  "updateDescription.updatedFields": {
    "$exists": true,
    "$type": "object"
  },
  "updateDescription.updatedFields.state": {
    "$in": ["LIVE", "OFFLINE", "DRAFT"]
  }
}

错误原因说明

你原来的写法把$or作为updateDescription.updatedFields的子字段,这不符合MongoDB查询语法规则——$or这类逻辑运算符需要作为查询条件的顶层元素,或者放在对应字段的校验层级中,而不是直接作为被更新字段对象的一部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:05:22