首页/数据/NoSQL 速查/聚合数组函数 $filter / $map / $reduce
MongoDB99 条

聚合数组函数 $filter / $map / $reduce

在管道里加工数组:$filter 筛选、$map 映射、$reduce 折叠聚合、$arrayElemAt 取元素、$size 取长度。

NoSQL 速查数据更新于 2026-10-12
筛选{ $filter: { input: "$scores", as: "s", cond: { $gt: ["$$s", 60] } } }
映射{ $map: { input: "$items", as: "i", in: { $multiply: ["$$i.qty", "$$i.price"] } } }
取元素{ $arrayElemAt: ["$items", 0] }

示例

示例
db.students.aggregate([
  { $project: {
      name: 1,
      passCount: { $size: { $filter: { input: "$scores", as: "s", cond: { $gte: ["$$s", 60] } } } },
      first: { $arrayElemAt: ["$scores", 0] }
  } }
])
自定义变量用 $$名称 引用;空数组与字段缺失的输入要提前分辨,避免结果不符预期。

易错点

  • $filter/$map 的 input 为 null 时表达式返回 null 而非空数组,条件计数前先清洗

数据来源与参考

  • MongoDB Manual: Array Expression Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌