$replaceRoot 在 mongodb 中

问题描述 投票:0回答:3

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

{
_id:{_id:"$_id",feature_type:"$feature_type",feature_name:"$feature_name"},
features: { $push: "$features" }
}

它给出的结果像

{_id:
     {_id:1,feature_type:"Test",feature_name:"Tests"},
  features:["23423","32423","2342342"]
}

但我想要像

这样的结果
{_id:1,feature_type:"Test",feature_name:"Tests",
  features:["23423","32423","2342342"]
}

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

mongodb mongodb-query aggregation-framework
3个回答
17
投票

您需要使用

$replaceRoot
来更改您的根文档

db.collection.aggregate([
  {
    "$addFields": {
      "_id.features": "$features"
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$_id"
    }
  }
])

6
投票
db.collection.aggregate([
  {      
      $project: {
                _id: "$_id._id",
                feature_type:"$_id.feature_type",
                feature_name:"$_id.feature_name",
                features:1
                }
  }
])

0
投票

最后使用项目阶段重塑文档。按您想要的顺序返回唯一所需的字段。

project_stage = [{ "$project":{" _id": "$_id._id",
            "feature_type":"$_id.feature_type",
            "feature_name":"$_id.feature_name",
            "features": "$features"}
            }]
© www.soinside.com 2019 - 2024. All rights reserved.