首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mongo聚合管道项目组匹配(相当于SQL select sum as group)

Mongo聚合管道项目组匹配(相当于SQL select sum as group)
EN

Stack Overflow用户
提问于 2019-05-18 20:49:30
回答 1查看 59关注 0票数 0

我是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方式接近它太多。

谢谢,

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56199097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档