我想聚合一个给定类型的集合。如果类型为富我想组由现场笔者,如果类型为酒吧我想按用户。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