我有一个使用几个组的MongoDB聚合操作:
5.times { |i| puts i }
返回以下数据:
{ $group: { "_id": { "vid": "$visitor_id", "pid":"$project.id" } } }
{ $group: { "_id": "$_id.vid", "count": { $sum: 1} } }
如何返回包含多个项目({
"results": [
{
"_id": "user1",
"count": 1
},
{
"_id": "user2",
"count": 2
},
{
"_id": "user3",
"count": 1
}
]
}
字段)的用户总数。在这种情况下,它将是:
count
因为只有{
total: 1
}
只有一个以上的项目(user2
> 1)。
我尝试添加以下群组操作无效:
count
有什么想法吗?
答案 0 :(得分:3)
您可以像在管道中添加以下三个聚合阶段一样简单地实现所需的结果:
{$match: {count: {$gt: 1}}}
{$group: {_id: null, total: {$sum: 1}}}
{$project: {_id: 0, total: 1}}
$match
阶段来过滤所有拥有1个以上项目的用户。$group
阶段来计算此类用户的总数。total
字段。