我只有RDBS的经验。可以通过多个字段聚合字段。
t_example:
country | city | val | useless
---------------------------------------
Ger | Ber | 10 | abc
Ger | Ber | 10 | abc
Ger | MU | 10 | abc
FR | Par | 10 | abc
SELECT country,city,sum(val)FROM t_example GROUP BY country,city;
=>
country | city | val
----------------------------
Ger | Ber | 20
Ger | MU | 10
FR | Par | 10
如果集合在JSON文件中包含相同的值,是否可以通过MongoDB获得相同的结果? 我在NodeJS上试过这个:
dbs.collection('t_example').aggregate([{ $group: { "_id": "$country","count":{$sum:1}}}]).toArray(function(error,result){
res.json(result);
});
我得到了一个类似的结果:
[{"_id":"Ger","count":30},{"_id":"Fr","count":10}]
是否可以通过其他字段(城市)细分数据? 我也无法更改密钥(_id)。否则结果是一个空数组。
答案 0 :(得分:1)
您可以使用以下管道。
[
{ $group: {
_id: { country: "$country", city: "$city" },
val: { $sum: "$val" }
} }
]
事实上,对于小组赛阶段,_id
can be a structured object。
生成的文档看起来像这样。
[
{
"_id" : {
"country" : "Fr",
"city" : "Par"
},
"val" : 10.0
},
{
"_id" : {
"country" : "Ger",
"city" : "MU"
},
"val" : 10.0
},
{
"_id" : {
"country" : "Ger",
"city" : "Ber"
},
"val" : 20.0
}
]