我现在有一个聚合,它返回如下所示的对象:
"_id": ObjectId("58f15197315e16762fbd2f0d"),
"versionCount": 3,
"article": {
"_id": ObjectId("58f152ecd549c4783a84f844"),
"otherProps": "etc..."
}
我已经经历了相当多的聚合步骤才到达这里。 article
下有很多属性。问题是,我希望它返回带有 versionCount
属性的文章。我可以创建一个 $project
并将每个属性单独分配给父文档,但这需要很多行代码并且相对脆弱。是否有更有效的方法来获取 article
中的所有属性并将它们分配给聚合返回的文档?
最佳答案
您可以使用$addFields
将顶级字段添加到子文档中,并使用$replaceRoot
将子文档提升到顶级。
db.collection.aggregate({
$addFields: {
"article.doc_id":"$_id",
"article.versionCount": "$versionCount"
}
}, {
$replaceRoot: {
newRoot: "$article"
}
})
关于javascript - MongoDB如何将子文档的属性聚合分配给父文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43420876/