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
相关产品推荐
相关产品推荐

