我有一个类似下面的文档,我想从中返回当前顶级字段的子字段作为结果数组的每个文档中的顶级字段:
{
field1: {
subfield1: {},
subfield2: [],
subfield3: 44,
subfield5: xyz
},
field2: {
othercontent: {}
}
}
我希望我的聚合查询的结果返回以下内容(field1
的内容作为顶级文档):
{
subfield1: {},
subfield2: [],
subfield3: 44,
subfield5: xyz
}
这可以通过 $project
和聚合框架来完成,而无需将每个子字段都定义为顶级字段返回吗?
最佳答案
您可以使用 $replaceRoot从 3.4 开始的聚合运算符:
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$field1"}
}
])
按预期提供输出:
{
"subfield" : {},
"subfield2" : [],
"subfield3" : 44,
"subfield5" : "xyz"
}
关于mongodb - 我可以使用聚合框架轻松地将子文档的所有字段作为顶级文档中的字段返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436510/