python - 使用 Python 在 MongoDB 中执行地理空间查询时出错
问题描述
我刚刚开始使用 MongoDB 和 Python 处理地理空间数据。下面是我的代码。对于普通查询,它工作正常,但对于“近”查询,我收到错误。
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, bson.son.SON, 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)
推荐阅读
- python - 如何找到一个方程的根,其中变量是函数的输出,目标变量作为参数本身?
- node.js - SSE 返回的数据比文件大小大 x50
- c++ - 如何转发声明依赖于变体定义的类,而后者又依赖于模板类?
- sql - SQL Server 查询 JSONobject 以获取聚合值
- javascript - 在 react-native / expo 中访问异步函数内的 const
- node.js - Firebase max 写入云函数
- swift - 为什么手动设置根视图控制器显示黑屏?
- hyperledger-fabric - 如何修复“存储私钥失败”?Error01 问题?
- python - 为什么打印函数中的 \r 不重写标准输出而是在下一行打印?
- java - 如何使用android中的函数做一个异步计数器