如何将两个NoSQL查询与Pymongo一起正确连接

时间:2019-03-23 00:54:50

标签: mongodb left-join pymongo

我已经存储了来自同一集合的2个聚合查询,并希望基于它们共有的字段进行正确的联接。

查询1返回每个行政区所有餐厅的计数

查询2根据预先选择的美食返回每个行政区的餐馆计数。

这个想法是将查询1的count字段连接到查询2,以显示在那里的自治市镇。

查询显示为列表,但是它们的结构类似于带有键值格式的字典。我尝试将两个查询像列表或字典一样加入,但无济于事。

pipeline1 = [{"$group" : {"_id": "$borough", "count" : {"$sum":1}}}]

RestsByBorough = list(db.restaurants.aggregate(pipeline1))


pipeline2 = [{"$match":{"cuisine":"Nuts/Confectionary"}}, 
             {"$group":{"_id":"$borough", "sum":{"$sum":1}}}]

BoroughByCuisine = list(db.restaurants.aggregate(pipeline2))

RestsByBorough给予

{'_id': 'Queens', 'count': 5656}
{'_id': 'Bronx', 'count': 2338}
{'_id': 'Brooklyn', 'count': 6086}
{'_id': 'Manhattan', 'count': 10259}
{'_id': 'Staten Island', 'count': 969}
{'_id': 'Missing', 'count': 51}

BoroughByCuisine提供

{'_id': 'Brooklyn', 'sum': 1}
{'_id': 'Manhattan', 'sum': 4}
{'_id': 'Queens', 'sum': 1}

我需要将它们聚在一起,例如:

{'_id': 'Brooklyn', 'sum': 1, 'count': 6086}
{'_id': 'Manhattan', 'sum': 4, 'count': 10259}
{'_id': 'Queens', 'sum': 1, 'count': 5656}

0 个答案:

没有答案