MongoDB Group by所有列的总和

时间:2016-12-20 07:43:19

标签: 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条记录(基本上是团队中的分组记录)。

所以我的最终输出应该是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
}

1 个答案:

答案 0 :(得分:1)

我认为你可以这样做:

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