我试图编写一个脚本来执行这里提到的基本2dsphere索引操作 2dsphere使用pymongo。在
我找不到任何例子来解释,这是我目前为止的尝试:
from pymongo import GEOSPHERE
client=MongoClient('localhost',27017)
db=client['dbtest']
points=db['points']
points.create_index([("loc",GEOSPHERE)])
points.insert({"loc":[2 5]})
points.insert({"loc":[30,5]})
more points.insert
for doc in points.find({"loc" : {"$near": { "$geometry" : {"type":"Point","coordinates":[1,2]},"$maxDistance":20}}}):
print doc
它给出错误pymongo.errors.OperationFailure: database error: can't find special index: 2d for: { loc: { $near: { $geometry: { type: "Point", coordinates: [ 1, 2 ] }, $maxDistance: 20 } } }
假设您的集合名为geoid,geojson对象名为geometry。。。在
那就够了!在
在最新版本中,我认为
$maxDistance
必须在$near
运算符内:2dsphere(pymongo.地圈)索引类型仅适用于MongoDB 2.4及更新版本。你还需要使用GeoJSON格式来表示你的观点。最后,MongoDB的geo查询操作符是顺序敏感的,因此在使用$maxDistance等选项时,必须使用SON。下面是一个使用$near的示例:
相关问题 更多 >
编程相关推荐