在 PyMongo 中执行 MongoDB 地理空间查询
PyMongo 是 Python 中的一个 MongoDB 驱动程序,支持 MongoDB 中的各种查询操作,其中包括地理空间查询。
在 PyMongo 中执行 MongoDB 地理空间查询,需要先创建一个 GeoSpatial Index(地理空间索引),以便 MongoDB 可以根据地理位置信息进行查询。可以通过以下代码创建一个 GeoSpatial Index:
from pymongo import MongoClient, GEOSPHERE client = MongoClient('mongodb://localhost:27017') db = client['test'] collection = db['test_collection'] collection.create_index([('location', GEOSPHERE)])
以上代码创建了一个名为 “location” 的字段上的 GeoSpatial Index。
接下来,可以使用以下代码进行地理空间查询:
from bson.son import SON from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017') db = client['test'] collection = db['test_collection'] # 查询附近的地点(以经纬度坐标为例): query = {'location': SON([('$near', [120, 30])])} result = collection.find(query) # 查询在指定区域内的地点: query = {'location': SON([('$geoWithin', {'$geometry': {'type': 'Polygon', 'coordinates': [[[0, 0], [0, 50], [50, 50], [50, 0], [0, 0]]]}})])} result = collection.find(query)
以上代码中,第一段代码使用 $near 运算符查询了经度为 120,纬度为 30 的坐标附近的地点;第二段代码使用 $geoWithin 运算符查询了一个多边形区域内的地点。
注意,以上代码中使用的坐标都是机场坐标。如果需要使用字符串作为范例,请自行将坐标转换为字符串形式。
相关文章