Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB如何在聚合中将子文档的属性分配给父文档_Javascript_Mongodb_Aggregation Framework - Fatal编程技术网

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

Javascript MongoDB如何在聚合中将子文档的属性分配给父文档,javascript,mongodb,aggregation-framework,Javascript,Mongodb,Aggregation Framework,我现在有一个聚合,它返回的对象如下所示: "_id": ObjectId("58f15197315e16762fbd2f0d"), "versionCount": 3, "article": { "_id": ObjectId("58f152ecd549c4783a84f844"), "otherProps": "etc..." } 我已经通过了相当多的聚合步骤到达这里。文章下有很多属性。问题是,我希望它返回带有versionCount属性的文章。我可以做一个$project并将每个属

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

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

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

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

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

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

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

你的mongo服务器版本是什么?mongo版本3.2.12恐怕你必须手动为该版本映射它们。关于我的信息和其他可能找到该帖子的人,你能回答mongo 3.4吗?我可以很快升级你的mongo服务器版本是什么?mongo版本3.2.12恐怕你必须手动将它们映射到该版本。关于我的信息和其他可能找到该帖子的人,你能回答mongo 3.4吗?我很快就能升级了