这是它的样子-

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/

    10-11 07:12