我想聚合一個給定類型的集合。如果類型爲富我想組由現場筆者,如果類型爲酒吧我想按用戶。MongoDb聚合和根據值取決於兩個字段的組
所有這些應該發生在一個查詢中。
實施例的數據:如果類型爲酒吧
{
"_id": 1,
"author": {
"someField": "abc",
},
"type": "foo"
}
{
"_id": 2,
"author": {
"someField": "abc",
},
"type": "foo"
}
{
"_id": 3,
"user": {
"someField": "abc",
},
"type": "bar"
}
該用戶字段只現有。
所以基本上就是這樣......試圖用$or
來表達它。
function() {
var results = db.vote.aggregate([
{ $or: [ {
{ $match : { type : "foo" } },
{ $group : { _id : "$author", sumAuthor : {$sum : 1} } } },
{ { $match : { type : "bar" } },
{ $group : { _id : "$user", sumUser : {$sum : 1} } }
} ] }
]);
return results;
}
有人對此有一個很好的解決方案嗎?
不是我所需要的。我需要每個作者的文檔。用戶與他們的總和 – koengsen 2014-10-22 06:45:59
@koengsen足夠。我主要是看你的樣本,根據所提供的數據只能得到一份文件。這和你似乎在要求總數。 – 2014-10-22 08:24:24