mongodb 中的 $replaceRoot

man*_*noj 5 mongodb mongodb-query aggregation-framework

我使用聚合框架对多个字段进行分组

{
_id:{_id:"$_id",feature_type:"$feature_type",feature_name:"$feature_name"},
features: { $push: "$features" }
}
Run Code Online (Sandbox Code Playgroud)

它给出的结果是

{_id:
     {_id:1,feature_type:"Test",feature_name:"Tests"},
  features:["23423","32423","2342342"]
}
Run Code Online (Sandbox Code Playgroud)

但我想要这样的结果

{_id:1,feature_type:"Test",feature_name:"Tests",
  features:["23423","32423","2342342"]
}
Run Code Online (Sandbox Code Playgroud)

我如何使用聚合框架来实现这一点。

Ash*_*shh 14

您需要使用$replaceRoot来更改您的根文件

db.collection.aggregate([
  {
    "$addFields": {
      "_id.features": "$features"
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$_id"
    }
  }
])
Run Code Online (Sandbox Code Playgroud)


man*_*noj 5

db.collection.aggregate([
  {      
      $project: {
                _id: "$_id._id",
                feature_type:"$_id.feature_type",
                feature_name:"$_id.feature_name",
                features:1
                }
  }
])
Run Code Online (Sandbox Code Playgroud)