【发布时间】:2015-11-16 06:38:37
【问题描述】:
我的收藏有以下文件
{
cust_id: "0044234",
Address: "1234 Dunn Hill",
city: "Pittsburg",
comments : "4"
},
{
cust_id: "0097314",
Address: "5678 Dunn Hill",
city: "San Diego",
comments : "99"
},
{
cust_id: "012345",
Address: "2929 Dunn Hill",
city: "Pittsburg",
comments : "41"
}
我想编写一段代码来提取和存储来自同一个城市的所有 cust_id。我可以通过在 MongoDB 上运行以下查询来得到答案:
db.custData.find({"city" : 'Pittsburg'},{business_id:1}).
但是,我无法使用 Python 做同样的事情。以下是我尝试过的:
ctgrp=[{"$group":{"_id":"$city","number of cust":{"$sum":1}}}]
myDict={}
for line in collection.aggregate(ctgrp) : #for grouping all the cities in the dataset
myDict[line['_id']]=line['number of cust']
for key in myDict:
k=db.collection.find({"city" : 'key'},{'cust_id:1'})
print k
client.close()
另外,我无法弄清楚如何存储它。我唯一想到的是一本字典,其中有一个与特定“键”相对应的“值列表”。但是,我想不出一个大致相同的实现。我正在寻找这样的输出
对于匹兹堡,值为 0044234 和 012345。
【问题讨论】:
-
我已经给出了预期的输出。对于键“Pittsburg”,值应为“0044234”和“012345”。或者,如果有更好的存储方式来代替这个。
-
所以如果我是正确的,你想得到一个像
['0044234', '012345']这样的列表。cust_id也很明显吧? -
是的。确切地。我想要这个与字典中键“匹兹堡”相对应的“值”列表。 Cust_id 是不同的,只有在对其进行分组之后(正如我在代码中所做的那样)。否则,该集合最初包含许多具有相同 cust_id 的文档。
标签: python mongodb mongodb-query pymongo aggregation-framework