如何在pymongo中返回mongodb对象数组(没有光标)?MapReduce可以这样做吗?
我在mongo中设置了一个db,我正在使用pymongo访问它 我希望能够将一小部分字段拉入字典列表。所以,就像我在mongo shell中输入时得到的一样如何在pymongo中返回mongodb对象数组(没有光标)?MapReduce可以这样做吗?,mongodb,pymongo,Mongodb,Pymongo,我在mongo中设置了一个db,我正在使用pymongo访问它 我希望能够将一小部分字段拉入字典列表。所以,就像我在mongo shell中输入时得到的一样 db.find({},{"variable1_of_interest":1, "variable2_of_interest":1}).limit(2).pretty() 我想要一个python语句,如: x = db.find({},{"variable1_of_interest":1, "variable2_of_interest":1
db.find({},{"variable1_of_interest":1, "variable2_of_interest":1}).limit(2).pretty()
我想要一个python语句,如:
x = db.find({},{"variable1_of_interest":1, "variable2_of_interest":1})
其中x是某种数组结构,而不是游标,也就是说,不是迭代,如:
data = []
x = db.find({},{"variable1_of_interest":1, "variable2_of_interest":1})
for i in x:
data.append(x)
我是否可以使用MapReduce将其转换为一行程序?差不多
db.find({},{"variable1_of_interest":1, "variable2_of_interest":1}).map_reduce(mapper, reducer, "data")
我打算将此数据集输出到R进行一些分析,但我希望将IO集中在Python中。您可以在pymongo中调用mapReduce,并将find查询作为参数传递给它,它可以如下所示:
db.yourcollection.Map_reduce(map_function, reduce_function,query='{}')
关于投影,我认为您需要在reduce函数中执行它们,因为查询只指定选择条件,正如它在中所说的那样。您不需要调用mapReduce,只需将光标变成如下列表:
>>> data = list(col.find({},{"a":1,"b":1,"_id":0}).limit(2))
>>> data
[{u'a': 1.0, u'b': 2.0}, {u'a': 2.0, u'b': 3.0}]
其中col是db.collection对象
但注意,如果结果很大,则会导致所有东西都加载到内存中。根据ASIA的答案: 如果您希望在每个条目中只包含一个值的列表,而不是对象列表,那么使用列表理解对我来说很有效 也就是说,如果每个对象代表一个用户,数据库存储了他们的
电子邮件
,并且您说需要所有15岁的用户
user\u emails=[user['email']代表db.people.find({'age':15})中的用户。
这是我不知道的一般python吗?游标对象上的list()强制游标进入其指向的值?这是一种语言-在JavaScript中(即在mongo shell中,您可以这样做:db.coll.find().toArray())-这将光标变成一个结果数组。如果只需要从数据库返回一个字段,是否可以像这样创建该字段的列表(例如在您的“a”示例中):>>>数据[1.0,2.0]?回答我自己的问题,我找到的最佳解决方案是: