如何在MongoDB中合并同文档及跨文档数组,生成指定格式单文档?
实现方法:MongoDB聚合管道
要把多个文档中accel数组里的x和y值分别合并成两个大数组,最终生成单文档,用MongoDB的聚合管道就能轻松完成,核心用到$unwind和$group这两个阶段,具体步骤如下:
步骤拆解
第一步:展开数组
先用$unwind阶段把每个文档里的accel数组拆分成独立的文档条目。比如原本一个包含2个{x,y}对象的accel数组,会被拆成2个单独的文档,每个文档只保留一个{x,y}对象。第二步:聚合收集值
接着用$group阶段,以null作为分组键(这样所有文档都会被聚合到同一组),然后通过$push操作符分别把所有文档里的x和y值收集到对应的数组中。可选:去除冗余字段
如果不需要结果里的_id字段,可以加一个$project阶段把它排除掉。
完整聚合查询代码
db.yourCollection.aggregate([ // 展开每个文档的accel数组 { $unwind: "$accel" }, // 聚合所有x、y值到对应数组 { $group: { _id: null, x: { $push: "$accel.x" }, y: { $push: "$accel.y" } } }, // 可选:移除_id字段 { $project: { _id: 0 } } ])
效果说明
执行完这个聚合命令后,你会得到完全符合需求的单文档:
{ "x": [xv1, xv2, xv3, xv4], "y": [yv1, yv2, yv3, yv4] }
内容的提问来源于stack exchange,提问作者tatulea
相关产品推荐
相关产品推荐

