我正在使用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的值,使用这些值,但它不会从这些代码中打印任何内容
6条答案
按热度按时间5vf7fwbs1#
find
方法返回一个Cursor
示例,该示例允许您迭代所有匹配的文档。要获取第一个符合给定条件的文档,需要使用
find_one
,find_one
的结果是一个字典。您总是可以使用
list
构造函数来返回集合中所有文档的列表,但请记住,这将加载内存中的所有数据,而这可能不是您想要的。如果需要重用游标并且有充分的理由不使用
rewind()
,则应该这样做使用
find
进行演示:使用
find_one
进行演示:0pizxfdo2#
简单
给你
up9lanfz3#
我建议创建一个列表并在其中添加字典。
现在x是一个字典列表,你可以用通常的python方法来操作它。
2fjabf4q4#
MongoDB
find
方法不返回单个结果,而是以Cursor
的形式返回结果列表,后者是一个迭代器,因此可以使用for
循环来遍历它。对于您的情况,只需使用
findOne
方法而不是find
,这将返回一个文档作为字典。lkaoscv75#
Map功能是快速转换大集合的方法
3lxsmp7m6#
**to_dict()**将一个SON文档转换为一个普通的Python字典示例。
这比dict(...)更棘手,因为它需要递归。
http://api.mongodb.org/python/current/api/bson/son.html