用mongodb聚合

时间:2019-01-09 12:35:16

标签: mongodb aggregation

我们将在MongoDb中保存每场比赛的球员统计信息。

{idPlayer: 27, idTeam: 6, matchId: 1, score: 90},
{idPlayer:38, idTeam: 9, matchId:1, score: 6}, 
{idPlayer:5, idTeam:8, matchId:2, score: 20}

我们想知道一个团队参加了多少场比赛: 我们希望结果为:

{idTeam, sumMatches}

{idTeam: 8, sumMatches: 6}
{idTeam: 9, sumMatches: 4}

我们正在尝试进行汇总,但是没有得到这个结果。

有什么主意要解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这应该做到:

db.collection.aggregate([
  {
    $group: {
      _id: "$idTeam",
      matches: {
        $addToSet: "$matchId"
      }
    }
  },
  {
    $project: {
      _id: 0,
      idTeam: "$_id",
      sumMatches: {
        $size: "$matches"
      }
    }
  }
])