想知道某個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}]}
是想要的結果了