MongoDB聚合管道调整:提取data数组作为最终结果
MongoDB聚合管道:提取嵌套data数组作为最终输出
假设你的聚合当前返回结果结构类似这样:
[ { "data": [ { "key1": "value1" }, { "key2": "value2" } ] } ]
要直接将data字段内的数组作为最终输出,去掉外层的文档和数组包裹,只需在现有管道末尾添加以下两步:
步骤1:展开data数组
使用$unwind操作符将data数组中的每个元素拆分为独立的文档:
{ $unwind: "$data" }
执行后输出结构变为:
[ { "data": { "key1": "value1" } }, { "data": { "key2": "value2" } } ]
步骤2:将data内容设为文档根
使用$replaceRoot将每个文档的data字段内容替换为文档本身:
{ $replaceRoot: { newRoot: "$data" } }
最终输出就是你需要的纯数组结构:
[ { "key1": "value1" }, { "key2": "value2" } ]
完整示例管道
如果你的原始管道是[/* 现有聚合步骤 */],修改后变为:
[ /* 现有聚合步骤 */, { $unwind: "$data" }, { $replaceRoot: { newRoot: "$data" } } ]
这种方法适用于外层包含单个或多个带data字段的文档场景,会将所有data数组中的元素合并为一个顶层输出数组。
内容的提问来源于stack exchange,提问作者Mohammed Mubeen
相关产品推荐
相关产品推荐

