mongodb 如何将一个pymongo.cursor.Cursor转换成一个dict?

jdgnovmf  于 2022-12-29  发布在  Go
关注(0)|答案(6)|浏览(268)

我正在使用pymongo查询一个区域中的所有项目(实际上是查询Map上一个区域内的所有场馆),之前我用db.command(SON())在一个球形区域内搜索,可以返回一个字典,字典里有一个关键字叫results,里面有场馆,现在我需要在一个正方形区域内搜索,建议我用db.places.find,不过,这将返回一个pymongo.cursor.Cursor类,我不知道如何从中提取venue结果。
有人知道我是应该将游标转换为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的值,使用这些值,但它不会从这些代码中打印任何内容

5vf7fwbs

5vf7fwbs1#

find方法返回一个Cursor示例,该示例允许您迭代所有匹配的文档。
要获取第一个符合给定条件的文档,需要使用find_onefind_one的结果是一个字典。
您总是可以使用list构造函数来返回集合中所有文档的列表,但请记住,这将加载内存中的所有数据,而这可能不是您想要的。
如果需要重用游标并且有充分的理由不使用rewind(),则应该这样做
使用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}
0pizxfdo

0pizxfdo2#

简单

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)

给你

up9lanfz

up9lanfz3#

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

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

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

2fjabf4q

2fjabf4q4#

MongoDBfind方法不返回单个结果,而是以Cursor的形式返回结果列表,后者是一个迭代器,因此可以使用for循环来遍历它。
对于您的情况,只需使用findOne方法而不是find,这将返回一个文档作为字典。

lkaoscv7

lkaoscv75#

Map功能是快速转换大集合的方法

from time import time

cursor = db.collection.find()

def f(x):
    return x['name']

t1 = time()
blackset = set(map(f, cursor))
print(time() - t1)
3lxsmp7m

3lxsmp7m6#

**to_dict()**将一个SON文档转换为一个普通的Python字典示例。

这比dict(...)更棘手,因为它需要递归。
http://api.mongodb.org/python/current/api/bson/son.html

相关问题