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

MongoDB 6.0中$filter聚合阶段未被识别,请求排查解决

问题原因及解决办法

核心问题

$filter是MongoDB聚合表达式,不是独立的管道阶段,你直接把它作为管道阶段传入aggregate(),所以触发"Unrecognized pipeline stage name"错误。

修正方案

将$filter嵌套在$project、$addFields这类支持字段计算的管道阶段中使用,同时修正NumberLong的参数格式解决警告:

rs0 [primary] test> db.users.aggregate([
  {
    $project: {
      filteredNumbers: {
        $filter: {
          input: [1, "a", 2, null, 3.1, NumberLong("4"), "5"],
          as: "num",
          cond: { 
            $and: [
              { $gte: ["$$num", NumberLong("-9223372036854775807")] }, 
              { $lte: ["$$num", NumberLong("9223372036854775807")] }
            ]
          }
        }
      }
    }
  }
])

额外说明

  • $filter的作用是筛选数组元素,必须在字段定义的上下文中使用(比如$project里生成新字段),不能单独作为管道步骤。
  • 关于NumberLong的警告:按照提示传入字符串参数而非数字,避免大整数场景下的精度丢失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:05:25