我有一些输入数据:
Brand | Model | Number
Peugeot | 208 | 1
Peugeot | 4008 | 2
Renault | Clio | 3
Renault | Megane | 4
我希望每一行都有一个新列,其中包含每个公司的总和(以获取给定品牌的模型所占的百分比):
Brand | Model | Number | Total
Peugeot | 208 | 1 | 3
Peugeot | 4008 | 2 | 3
Renault | Clio | 3 | 7
Renault | Megane | 4 | 7
我试图做类似的事情,但没有成功:
{
$group: {
_id: { Brand: "$Brand" },
Model: { $push: "$Model"},
Number: { $push: "$Number"},
Total: { $sum: "$Number" }
}
},
{
$unwind:
path: ["$Model", "$Number"]
}
有没有办法进行汇总?
答案 0 :(得分:1)
您可以在3.6中使用以下汇总。
$$ROOT
访问整个文档,然后用$addFields
将“ Total”字段添加到文档中,然后使用$unwind
和$replaceRoot
将合并文档提升到顶部。
[{"$group":{
"_id":{"Brand":"$Brand"},
"data":{"$push":"$$ROOT"},
"Total":{"$sum":"$Number"}
}},
{"$unwind":"$data"},
{"$addFields":{"data.Total":"$Total"}},
{"$replaceRoot":{"newRoot":"$data"}}
]