MongoDB Group by 所有列的总和

标签 mongodb

示例输入:

[
  {
    "_id": 1,
    "team": "a",
    "score": 200
  },
  {
    "_id": 2,
    "team": "a",
    "score": 200
  },
  {
    "_id": 3,
    "team": "b",
    "score": 700
  },
  {
    "_id": 4,
    "team": "c",
    "score": 100
  }
]

从上面的数据中,我试图获得所有 score 列的总和,并根据 team 进行分组。

在示例输入团队中,a 有 2 条记录,但在计算过程中,我只需要获取其中的 1 条记录(基本上是团队中的 groupby)。

所以我的最终输出应该是200 + 700 + 100 = 1000

我已尝试使用以下查询,但无法获得所需的输出。

db.games.aggregate([ { 
$group: { 
    "_id": "$team",
    score : { $first: '$score' },
    total: { $sum: "$score" } 
}
}])

并输出为

{
    "result" : [ 
        {
            "_id" : "c",
            "score" : 100,
            "total" : 100
        }, 
        {
            "_id" : "b",
            "score" : 700,
            "total" : 700
        }, 
        {
            "_id" : "a",
            "score" : 200,
            "total" : 400
        }
    ],
    "ok" : 1.0000000000000000
}

最佳答案

我想你可以这样做:

db.names.aggregate([
        {$group:{_id:"$team", score: {$first:"$score"}}}, 
        {$group:{_id:"", sum: {$sum:"$score"}}}]);

关于MongoDB Group by 所有列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41237148/

相关文章:

node.js - 使用 Mongoose 查询嵌套的嵌入式文档

Node.js Passport Facebook 身份验证未返回电子邮件

node.js - Mongoose 引用被覆盖

java - 是否可以添加另一个字段来查找和过滤 java 中 mongodb 数据库的结果?

node.js - 居住在 Mongoose 中

计划中的 MongoDB SHARDING_FILTER

node.js - 如何使用node.js从数组中获取值?

node.js - Mongoose:一系列自定义实例

python - 将 Eve REST API 连接到 MongoDB 实例的 ConnectionException

MongoDB $dateToString 格式表达式 %G 奇怪的行为