如何在mongodb中使用python(pymongo)计算文档中字段值的总和

whhtz7ly  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(116)

我在MongoDB中存储了一些具有以下结构的文档:

DOCUMENT 1
{
   "_id":{
      "$oid":"634c4eb3421aa4567782ffc7af"
   },
   "name":"John Doe",
   "wins":{
      "texas":{
         "football":{
            "count":1,
         },
         "basketball":{
            "open_count":1,
         }
      }
   }
}

DOCUMENT 2
{
   "_id":{
      "$oid":"634c4eb3421aa4567782ffc7af"
   },
   "name":"Johnny Doey",
   "wins":{
      "texas":{
         "football":{
            "count":3,
         },
         "basketball":{
            "open_count":4,
         }
      }
   }
}

在这里,我试图得到一个学生的胜利的游戏类型。例如:这个结果应该能告诉我足球比赛的总胜利数(包括两个学生)。2有了上面的文件,总胜利数(1+3 = 4,即John Doe赢1场+Johnny Doey赢1场)。
我无法为这个案例得出正确的pymongo聚合查询。请求对如何实现这一点发表评论。
我试过group by,但它只对值起作用,而不对文档的键起作用(在这种情况下,足球是计算所有学生在足球比赛中获胜的关键)。

mqkwyuun

mqkwyuun1#

好的,我找到了答案。我用$group尝试的方向是正确的,但是我写查询的方式有一些问题。
这可以用来计算足球的总胜利数。

collection.aggregate([{ 
  '$group': { 
      '_id':None, 
      'total': { '$sum': '$wins.texas.football.count' }
  }
}])

相关问题