MongoDB如何将子文档的属性分配给父级聚合

时间:2017-04-15 00:23:27

标签: javascript mongodb aggregation-framework

我有一个聚合,现在,它返回的对象如下:

"_id": ObjectId("58f15197315e16762fbd2f0d"),
"versionCount": 3,
"article": {
  "_id": ObjectId("58f152ecd549c4783a84f844"),
  "otherProps": "etc..."
}

我已经经历了很多聚合步骤来到这里。 article下有很多属性。问题是,我希望它返回带有versionCount属性的文章。我可以做一个$project并单独将每个属性分配给父文档,但这需要多行代码并且相对脆弱。是否有更有效的方法从article获取所有属性并将它们分配给聚合返回的文档?

1 个答案:

答案 0 :(得分:2)

您可以使用$addFields将顶级字段添加到子文档,并使用$replaceRoot将子文档提升到顶级。

db.collection.aggregate({
    $addFields: {
        "article.doc_id":"$_id",
        "article.versionCount": "$versionCount"
    }
}, {
    $replaceRoot: {
        newRoot: "$article"
    }
})