这就是它的样子 -
db.log.aggregate({
$match:{ v:1, t:"trainingStep" },
$group:{ _id:{userId:'$u',questionId:'$s'}, counts:{$sum:1} },
$match:{ 'counts':{$gte:2} }
})
- 第一场比赛非常完美。
- 该团队运作完美,完全满足了我的需求。
- 最后一个 $match 不起作用,并且显示所有计数,而不是我请求的 >=2
我尝试过“counts”、“$counts”、“$counts”...但都没有成功!
最佳答案
aggregate
管道中的每个运算符都需要是单独的对象。此外,虽然某些版本的 shell(和驱动程序)可能允许将对象作为单独的参数传递,但正确的方法是将它们包装在单个数组中传递。试试这个:
db.log.aggregate([
{ $match: { v: 1, t: "trainingStep" } },
{ $group: { _id: {userId: '$u', questionId: '$s'}, counts: {$sum: 1} } },
{ $match: { 'counts': {$gte: 2} } }
])
关于Mongodb聚合框架|双赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145468/