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

MongoDB中如何将查询返回的文档数组合并为单个文档?

解决MongoDB文档合并需求的方法

你可以通过MongoDB的聚合管道,结合$group阶段来实现将多个文档的alphabet数组合并为单个文档中嵌套数组的需求。这里有两种实现方式,你可以根据需要选择:

方式一:保留原$project阶段的完整流程

如果你想保留原来的$project阶段(用于过滤字段),可以使用以下聚合语句:

db.tc_example.aggregate([
  { $project: { _id: 0, alphabet: 1 } }, // 仅保留alphabet字段,移除默认的_id
  {
    $group: {
      _id: null, // 将所有文档归为同一个分组
      alphabet: { $push: "$alphabet" } // 将每个文档的alphabet数组添加到新的alphabet数组中
    }
  },
  { $project: { _id: 0 } } // 移除分组后生成的_id字段
])

方式二:简化版(跳过冗余的$project)

实际上,$group阶段可以直接引用原文档的alphabet字段,所以你可以省去前面的$project阶段,让语句更简洁:

db.tc_example.aggregate([
  {
    $group: {
      _id: null,
      alphabet: { $push: "$alphabet" }
    }
  },
  { $project: { _id: 0 } }
])

关键逻辑说明

  • $group阶段的_id: null是核心:它会把集合中所有匹配的文档都归为一个分组,这样我们就能对所有文档的字段进行聚合操作。
  • $push操作符的作用是:将分组内每个文档的指定字段值(这里是每个文档的alphabet数组)逐一添加到一个新数组中,最终形成你需要的嵌套数组结构。

执行上述任一语句后,你都会得到想要的结果:

{ "alphabet": [ ["A", "B", "C"], ["D", "E", "F"], ["G", "H", "I"] ] }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:04:29