我使用聚合框架对多个字段进行分组
{
_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"]
}
我如何使用聚合框架来实现这一点。
$replaceRoot
来更改您的根文档
db.collection.aggregate([
{
"$addFields": {
"_id.features": "$features"
}
},
{
"$replaceRoot": {
"newRoot": "$_id"
}
}
])
db.collection.aggregate([
{
$project: {
_id: "$_id._id",
feature_type:"$_id.feature_type",
feature_name:"$_id.feature_name",
features:1
}
}
])
最后使用项目阶段重塑文档。按您想要的顺序返回唯一所需的字段。
project_stage = [{ "$project":{" _id": "$_id._id",
"feature_type":"$_id.feature_type",
"feature_name":"$_id.feature_name",
"features": "$features"}
}]