MongoDB 4中如何移除聚合结果的result字段,直接返回数组
在MongoDB 4中提取数组字段作为直接结果的方法
针对你的场景——聚合管道最终输出仅包含result数组字段的文档,想要移除该字段直接得到数组内容,可以通过以下聚合阶段组合实现:
- 使用
$unwind阶段将result数组拆分为多个独立文档,每个文档对应数组中的一个气象事件元素; - 使用
$replaceRoot阶段将拆分后的每个元素替换为根文档,最终输出的就是数组中的每个气象事件文档,等价于直接获取原数组的内容。
示例聚合管道
假设你的聚合管道前序阶段已经生成了含result字段的文档,添加以下阶段即可:
[ // 拆分result数组为单个文档 { $unwind: "$result" }, // 将每个数组元素作为根文档输出 { $replaceRoot: { newRoot: "$result" } } ]
补充说明
MongoDB的聚合管道输出本质是文档集合,无法直接输出纯数组格式。上述方法通过拆分+替换根文档的方式,将原数组的每个元素转化为独立输出文档,效果与直接获取数组内容一致。如果你的MongoDB版本是4.2及以上,也可以用$replaceWith替代$replaceRoot(两者功能一致,$replaceWith是$replaceRoot的别名),但该阶段同样只能接收文档类型参数,因此仍需配合$unwind使用。
内容的提问来源于stack exchange,提问作者asant-leitha
相关产品推荐
相关产品推荐

