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

MongoDB中$project阶段$filter用对象表达式报错问题咨询

问题解答

报错是否符合预期?

是的,这个报错完全符合预期。你的$filter阶段中cond字段的写法不符合MongoDB聚合表达式的语法规范:

  • cond要求接收一个布尔表达式,必须用MongoDB提供的聚合操作符(如$eq、$gt等)构建判断逻辑
  • 直接写成{"$$tar.name": "ally"}这种键值对形式,MongoDB无法识别这是合法表达式,因此抛出"Unrecognized expression"错误

正确实现方式

要筛选出tar数组中name等于"ally"的元素,需在cond中使用$eq比较操作符构建条件,完整代码如下:

$project: {
  tar: {
    $filter: {
      input: "$tar",
      cond: { $eq: ["$$tar.name", "ally"] },
      as: "tar"
    }
  }
}

补充说明

  • $$tar是$filter中as参数定义的迭代变量,代表数组中的每一个元素
  • $eq操作符会对比第一个参数($$tar.name)和第二个参数("ally")是否相等,返回布尔值决定当前元素是否被保留

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:45:28