MongoDB groupby-在字段中拉取逗号分隔的值



我想按集合分组,并想提取逗号分隔的值。

在下面的例子中;类型";并且想要提取$sum的";合计";以及所有可能的唯一值"0";值";在应该用逗号分隔的字段中。

集合:

[
{
"type": "1",
"value": "value1",
"total": 10
},
{
"type": "1",
"value": "value3",
"total": 20
},
{
"type": "1",
"value": "value3",
"total": 30
},
{
"type": "2",
"value": "value1",
"total": 10
},
{
"type": "2",
"value": "value2",
"total": 20
}
]

我期待的输出:

[
{
"type": "1",
"value": "value1,value3",
"total": 60
},
{
"type": "2",
"value": "value1,value2",
"total": 30
}
]

请帮助提供方法或代码。

这可以通过$group和$project聚合方法来实现:

https://mongoplayground.net/p/230nt_AMFIm

db.collection.aggregate([
{
$group: {
_id: "$type",
value: {
$addToSet: "$value"
},
total: {
$sum: "$total"
}
},

},
{
$project: {
_id: 0,
type: "$_id",
value: "$value",
total: "$total"
}
},
])

最新更新