想知道某个country和province下userid的数量,相同userid算一个
如果这么写,
[
{
$group:
{
"_id": {"country": "$country", "province": "$province"},
'count': {$sum: 1}
}
}
]
返回了
{"result":[{"_id":{"country":"us","province":"shandong"},"count":2},
{"_id":{"country":"cha","province":"beij"},"count":1},
{"_id":{"country":"cha","province":"shandong"},"count":3}]
}
从结果来看,计算结果是按照country和province分组了,就是同一个country和province下有几条数据,
不是我们想要的结果,再改
[{ $group: { "_id": {"country": "$country", "province": "$province", "uid": "$userid"}, 'count': {$sum: 1} } }]
返回了
{"result":[{"_id":{"country":"cha","province":"beij","uid":"aaa"},"count":1},
{"_id":{"country":"us","province":"shandong","uid":"aaa"},"count":2},
{"_id":{"country":"cha","province":"shandong","uid":"bbb"},"count":2},
{"_id":{"country":"cha","province":"shandong","uid":"aaa"},"count":1}
]}
再改,
[ { $group: { "_id": {"country": "$country", "province": "$province", "uid": "$userid"}, 'count': {$sum: 1} } }, { $group: { "_id": {"country": "$_id.country", "province": "$_id.province", "uid": "$_id.uid"}, 'count': {$sum: 1} } } ];
返回了
{"result":[{"_id":{"country":"cha","province":"shandong","uid":"aaa"},"count":1},
{"_id":{"country":"cha","province":"shandong","uid":"bbb"},"count":1},
{"_id":{"country":"us","province":"shandong","uid":"aaa"},"count":1},
{"_id":{"country":"cha","province":"beij","uid":"aaa"},"count":1}
]}
和上一个的结果相比,就是count都变成了1,还不是想要的结果,再改改
[ { $group: { "_id": {"country": "$country", "province": "$province", "uid": "$userid"}, 'count': {$sum: 1} } }, { $group: { "_id": {"country": "$_id.country", "province": "$_id.province", /*"uid": "$_id.uid"*/}, 'count': {$sum: 1} } } ];
就是注释了一点点的代码,返回结果
{"result":[{"_id":{"country":"us","province":"shandong"},"count":1},
{"_id":{"country":"cha","province":"shandong"},"count":2},
{"_id":{"country":"cha","province":"beij"},"count":1}]}
是想要的结果了