在 PyMongo 中执行 MongoDB 地理空间查询

2023-04-15 00:00:00 查询 执行 地理

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 运算符查询了一个多边形区域内的地点。

注意,以上代码中使用的坐标都是机场坐标。如果需要使用字符串作为范例,请自行将坐标转换为字符串形式。

相关文章