示例输入:
[
{
"_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
}
答案 0 :(得分:1)
我认为你可以这样做:
db.names.aggregate([
{$group:{_id:"$team", score: {$first:"$score"}}},
{$group:{_id:"", sum: {$sum:"$score"}}}]);