Mongodb $project是否允许将文档JSON中给定字段的所有子字段移动到上层?
我在MongoDB 4.2中收集了如下文档:Mongodb $project是否允许将文档JSON中给定字段的所有子字段移动到上层?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我在MongoDB 4.2中收集了如下文档: { "_id": ..., "timestamp" : ISODate(...), "data" : { "field1" : ... , "field2" : ... , ... "fieldN" : ... } 其中N可能相当大(约20个字段) data元素只是一个样板,所以我想去掉它,并将我的文档简化为: { "_id": ..., "ti
{
"_id": ...,
"timestamp" : ISODate(...),
"data" : {
"field1" : ... ,
"field2" : ... ,
...
"fieldN" : ...
}
其中N可能相当大(约20个字段)
data
元素只是一个样板,所以我想去掉它,并将我的文档简化为:
{
"_id": ...,
"timestamp" : ISODate(...),
"field1" : ... ,
"field2" : ... ,
...
"fieldN" : ...
}
使用聚合框架,我可以对$project
阶段执行以下操作:
db.c.aggregate([
{$project: {timestamp: 1, field1: "$data.field1", field2: "$data.field1", ..., fieldN: "$data.fieldN"}}
])
此解决方案的问题是,$project
值可能非常大,聚合查询很长且容易混淆
还有其他更好的选择吗?$project
是否允许将文档JSON中给定字段的所有子字段移动到上层
谢谢 您可以尝试以下方法:
db.collection.aggregate([
{
$replaceRoot: {
newRoot: {
$mergeObjects: ["$$ROOT","$data"]
}
}
},
{
$project: {
data: 0
}
}
])