微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Python 在 MongoDB 中执行地理空间查询时出错

如何解决使用 Python 在 MongoDB 中执行地理空间查询时出错

我刚刚开始使用 MongoDB 和 Python 处理地理空间数据。下面是我的代码。对于普通查询,它工作正常,但对于 'near' 查询,我收到错误

 from pymongo import MongoClient

client = MongoClient("mongodb+srv://dummyuser:dummypassword@cluster0.xprs.mongodb.net/test?retryWrites=true&w=majority")
db = client["MyDB"]
col = db["MyCollection"]
query = """{
geometry: {
$near: {
$geometry: {
type: 'Point',coordinates: [77.25467696734609,28.63449787747656]
},$maxdistance: 5000,$mindistance: 10
  }
 }
}"""

docs = (col.find(query))

for doc in docs:
  print(doc)

执行此代码时出现以下错误

C:\user\Python\parse-payment-response\venv\Scripts\python.exe C:/user/Python/jsonParser/mongoclnt.py
Traceback (most recent call last):
  File "C:/user/Python/jsonParser/mongoclnt.py",line 24,in <module>
    docs = [(col.find(query))]
  File "C:\user\Python\parse-payment-response\venv\lib\site-packages\pymongo\collection.py",line 1523,in find
    return Cursor(self,*args,**kwargs)
  File "C:\user\Python\parse-payment-response\venv\lib\site-packages\pymongo\cursor.py",line 144,in __init__
    validate_is_mapping("filter",spec)
  File "C:\user\Python\parse-payment-response\venv\lib\site-packages\pymongo\common.py",line 494,in validate_is_mapping
    raise TypeError("%s must be an instance of dict,bson.son.soN,or "
TypeError: filter must be an instance of dict,or any other type that inherits from collections.Mapping

请帮忙

解决方法

经过大量的努力和搜索,我解决了这个问题。代码如下:

from pymongo import MongoClient

MongoClient("mongodb+srv://dummyuser:dummypassword@cluster0.xprs.mongodb.net/test?retryWrites=true&w=majority")
db = client["MyDB"]
col = db["MyCollection"]
query={"geometry": {"$nearSphere": {"$geometry": {"type": "Point","coordinates": [77.25467696734609,28.63449787747656]},"$maxDistance": 2000,"$minDistance": 10}}}
docs = col.find(query)
for doc in docs:
  print(doc)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。