python - 如何将 pymongo.cursor.Cursor 转换为 dict?

db为pymongo.database.Database类


>>> import pymongo
>>> db = pymongo.MongoClient(host).PSRC 
>>> resp = db.places.find({"loc": {"$within": {"$box": [[ll_lng,ll_lat], [ur_lng,ur_lat]]}}})
>>> for doc in resp:
>>> print(doc)

时间:

find方法返回一个Cursor实例,它允许你遍历所有匹配的文档。

获取与你使用的特定条件相匹配的第一个文档find_onefind_one,结果就是一个字典。

find的例子:


>>> import pymongo
>>> conn = pymongo.MongoClient()
>>> db = conn.test #test is my database
>>> col = db.spam #Here spam is my collection
>>> cur = col.find() 
>>> cur
<pymongo.cursor.Cursor object at 0xb6d447ec>
>>> for doc in cur:
... print(doc)
... 
{'a': 1, '_id': ObjectId('54ff30faadd8f30feb90268f'), 'b': 2}
{'a': 1, 'c': 3, '_id': ObjectId('54ff32a2add8f30feb902690'), 'b': 2}

find_one的例子:


>>> col.find_one()
{'a': 1, '_id': ObjectId('54ff30faadd8f30feb90268f'), 'b': 2}

MongoDB find方法不返回单个结果,而是以Cursor的形式返回结果列表,后者是一个迭代器,因此可以用for循环遍历它。

对于你的案例,只需使用findOne方法而不是find,这将返回一个字典。

to_dict()将子文档转换为普通python字典实例。

这比dict(...)更棘手,因为它需要递归。

http://api.mongodb.org/python/current/api/bson/son.html

我建议创建一个列表并将字典追加到其中。


x=[]
 cur = db.dbname.find()
 for i in curr:
 x.append(i)
 print(x)

现在x是一个字典列表,你可以用python方法操作。

容易


import pymongo
conn = pymongo.MongoClient()
db = conn.test #test is my database
col = db.spam #Here spam is my collection
array = list(col.find())

print array

...