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

MongoDB聚合:过滤嵌套数组并投影指定嵌套字段

MongoDB聚合:过滤嵌套数组并投影指定嵌套字段

要实现过滤嵌套数组(保留年龄为9的学生)同时仅返回每个学生的name和pets字段,你需要在$filter之后配合$map操作来对过滤后的数组元素做字段投影。修改后的聚合代码如下:

db.classes.aggregate([
  { "$match": {} },
  { "$project": {
    "_id": 0,
    "teacher": 1,
    "students": {
      "$map": {
        input: {
          "$filter": {
            input: "$students",
            cond: { "$eq": [ "$$this.age", 9 ] }
          }
        },
        as: "student",
        in: {
          "name": "$$student.name",
          "pets": "$$student.pets"
        }
      }
    }
  }}
])

代码说明:

  • $filter:先从students数组中筛选出age等于9的元素,得到符合条件的学生集合。
  • $map:遍历过滤后的学生集合,对每个元素仅提取name和pets字段,生成新的数组结构。
  • $project:控制最终文档的字段,隐藏_id,保留teacher和处理后的students数组。

执行上述聚合操作后,将得到你期望的结果:

{
  "teacher": "Ben",
  "students": [
    {
      "name": "Jon",
      "pets": 3
    },
    {
      "name": "Eva",
      "pets": 2
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:04:54