from pymongo import MongoClient, GEO2D
#使用geo_example库
db = MongoClient('192.168.30.252',27017).geo_example
#创建索引在places上的loc列
db.places.create_index([("loc",GEO2D)])
#插入坐标数据
result = db.places.insert_many([{"loc": [2, 5]},{"loc":[30, 5]},{"loc": [1, 2]},{"loc": [4, 4]}]) #查询离[3,6]最近的坐标
for doc in db.places.find({"loc": {"$near": [3, 6]}}).limit(3):
repr(doc) from bson.son import SON
#增加最大距离
query = {"loc": SON([("$near", [3, 6]), ("$maxDistance", 2)])} #在(2,2) (5,6)lower-left and upper-right
query = {"loc": {"$within": {"$box": [[2, 2], [5, 6]]}}}
for doc in db.places.find(query).sort('_id'):
repr(doc) #在半径为6的圆内
query = {"loc": {"$within": {"$center": [[0, 0], 6]}}}
for doc in db.places.find(query).sort('_id'):
repr(doc) from bson.son import SON
db.command(SON([('geoNear', 'places'), ('near', [1, 2])]))