我是Mongo DB的新手,非常感谢您对以下数据库查询的帮助。我基本上需要选择“结果”字段在“第一”、“第二”或“第三”中的所有结果,并将其归类为“奖牌”(奖牌获得者)。
然后,我需要在管道中进行相反的操作,以选择没有赢得奖牌的地方。我猜SQL中的等价物应该是选择结果在‘first’、‘second’或‘third’中的条目的太阳作为‘medals’,并选择不在‘first’、‘second’或‘third’中的条目的总和作为‘non_medals’。然后按国家/地区对结果进行分组。
下面是我到目前为止已经想出的查询,但似乎不能正确处理。
pipeline_4 =[
{'$match': {'Outcome': {'$in': ['first','second', 'third'] } ,'Country': {'$exists': True}}},
{'$group': {'_id': {'outcome': '$Outcome', 'country': '$Country'},
'medals': {'$sum': 1}}},
{'$project': {
'outcome': 1, 'country', 1, 'medals': 1
}},
{'$match': {'Outcome': {'$nin': ['first','second', 'third'] } ,'Country': {'$exists': True}}},
{'$group': {'_id': {'outcome': '$Outcome', 'country': '$Country'},
'non_medals': {'$sum': 1}}},
{'$project': {
'outcome': 1, 'country', 1, 'non_medals': 1
}}
]
有人能在这方面给点建议吗?目前,我只得到奖牌组的返回,他们没有分组。如果你需要更多的信息,请问,因为我说我是新来的Mongo,可能是以标准的SQL方式接近它太多。
谢谢,
https://stackoverflow.com/questions/56199097
复制相似问题