Mongodb聚合框架|双赛

标签 mongodb aggregation-framework

这就是它的样子 -

db.log.aggregate({
  $match:{ v:1, t:"trainingStep" },
  $group:{ _id:{userId:'$u',questionId:'$s'}, counts:{$sum:1} },
  $match:{ 'counts':{$gte:2} }
})
  1. 第一场比赛非常完美。
  2. 该团队运作完美,完全满足了我的需求。
  3. 最后一个 $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/

相关文章:

mongodb - 我可以在 MongoDB 聚合查询中获取第一个文档(不是字段)吗?

node.js - 如何在数组mongodb中推送新字段

c# - mongodb C# 驱动程序更新多个字段

mongodb - Mongodb聚合框架: what is the lock level of the last stage $out operation?

Mongodb计数与多个组字段不同

java - 如何将 Sum SQL 与 Spring Data MongoDB 一起使用?

mongodb - 总计 $project 中的新 Date()

javascript - 更新的 Mongoose 更新嵌套数组元素

perl - 从 Perl 驱动程序插入 MongoDB 服务器日期

mongodb - 如何仅在一个查询中获取对一个集合的多个查询的计数?