如何将pymongo.cursor.cursor转换为dict?

2024-05-28 20:56:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pymongo查询一个区域中的所有项目(实际上是查询地图上一个区域中的所有场馆)。我以前用db.command(SON())在一个球形区域中搜索,这个区域可以返回一个字典,字典中有一个名为results的键,它包含了地点。现在我需要在一个正方形区域中搜索,建议使用db.places.find,但是,这会返回一个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)

我有ll_lng,ll_lat,ur_lng和ur_lat的值,使用这些值,但它不会从这些代码中打印任何内容


Tags: 代码区域dbdoc字典findrespdatabase
3条回答

我建议创建一个列表并在其中添加词典。

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

现在x是一个字典列表,您可以用通常的python方式操作它。

^{}方法返回一个^{}实例,该实例允许您遍历所有匹配的文档。

要获取与给定条件匹配的第一个文档,您需要使用^{}find_one的结果是一个字典。

您始终可以使用list构造函数返回集合中所有文档的列表,但请记住,这将在内存中加载所有数据,并且可能不是您想要的那样。

如果需要重用光标并且有充分的理由不使用^{},则应该这样做


演示使用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)  # or do something with the document
... 
{'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}

容易

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

给你

相关问题 更多 >

    热门问题