我有一个聚合,现在,它返回的对象如下:
"_id": ObjectId("58f15197315e16762fbd2f0d"),
"versionCount": 3,
"article": {
"_id": ObjectId("58f152ecd549c4783a84f844"),
"otherProps": "etc..."
}
我已经经历了很多聚合步骤来到这里。 article
下有很多属性。问题是,我希望它返回带有versionCount
属性的文章。我可以做一个$project
并单独将每个属性分配给父文档,但这需要多行代码并且相对脆弱。是否有更有效的方法从article
获取所有属性并将它们分配给聚合返回的文档?
答案 0 :(得分:2)
您可以使用$addFields
将顶级字段添加到子文档,并使用$replaceRoot
将子文档提升到顶级。
db.collection.aggregate({
$addFields: {
"article.doc_id":"$_id",
"article.versionCount": "$versionCount"
}
}, {
$replaceRoot: {
newRoot: "$article"
}
})