如何从aggregate聚合结果中提取person_id字段生成扁平结构
MongoDB聚合查询结果扁平化实现方案
你可以在现有聚合管道的末尾追加额外的阶段实现嵌套字段提取,有两种常用实现方式:
方案1:使用$project显式提取字段
适合你只需要提取person_id单个字段的场景,写法直观:
// 你的现有聚合逻辑后面添加以下阶段 { $project: { _id: 0, person_id: "$_id.person_id" } }
参数说明:
_id: 0表示最终结果不返回默认的_id字段person_id: "$_id.person_id"表示从嵌套的_id结构中读取person_id的值,作为顶层的person_id字段返回
方案2:使用$replaceRoot直接提升嵌套结构
适合_id下嵌套字段较多的场景,不需要逐个声明要提取的字段:
// 你的现有聚合逻辑后面添加以下阶段 { $replaceRoot: { newRoot: "$_id" } }
这个阶段会直接把_id对应的整个嵌套对象替换为最终返回的文档结构,一步完成扁平化。
内容的提问来源于stack exchange,提问作者Zbigniew Szczęsny
相关产品推荐
相关产品推荐

