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

标签 javascript mongodb aggregation-framework

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

"_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/

相关文章:

mongodb - Map Reduce 上的 Reduce 函数显示不正确的结果——为什么?

regex - 展开对象数组 mongoDB

javascript - MongoDB 聚合 - 放松、分组和项目

javascript - 使用 MobX 对数组进行排序

javascript - Mongoose 交易-MongoError : Commited to Aborted

java - 将 Springboot 从 2.1.0 迁移到 2.2.1 时出现 Mongo 错误

javascript - 如何将查询结果推送到node.js中的数组变量?

mongodb - 使用 $lookup 根据匹配条件对数组进行切片

Javascript 对象自定义函数

javascript - 如何从常规网站调用 Chrome 扩展中定义的函数?