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

如何返回MongoDB文档中数组内所有元素的指定属性?

MongoDB聚合管道提取数组指定字段方案

要从用户文档的trips数组中提取每个元素的title和_id,用聚合管道可以这么实现:

基础实现(返回目标格式的文档列表)

直接拆分数组并筛选字段,返回结果就是你想要的结构:

db.users.aggregate([
  // 把trips数组拆分为单个元素的独立文档
  { $unwind: "$trips" },
  // 提取需要的字段并映射到根层级
  { $project: {
      _id: "$trips._id",
      title: "$trips.title",
      // 移除原文档的_id(可选,不需要则保留)
      _id: 0
    }
  }
])

进阶实现(合并为单个数组返回)

如果希望结果打包成一个包含所有元素的数组,加上分组阶段即可:

db.users.aggregate([
  { $unwind: "$trips" },
  { $project: {
      _id: "$trips._id",
      title: "$trips.title",
      _id: 0
    }
  },
  // 将所有结果合并为一个数组
  { $group: {
      _id: null,
      tripsList: { $push: "$$ROOT" }
    }
  },
  // 仅输出数组字段
  { $project: {
      _id: 0,
      tripsList: 1
    }
  }
])

各阶段作用说明

  • $unwind:将每个用户文档中的trips数组拆分,每个数组元素对应一个新文档
  • $project:筛选并映射字段,把trips子文档内的title和_id提取到根层级
  • $group(可选):将所有拆分后的文档合并成一个数组,方便一次性获取完整结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:06:28