Geospatial queries with MongoDB

Ellie Huxtable

使用 MongoDB 进行地理空间查询

我目前正在试用 MongoDB 及其 geospatial queries(地理空间查询)。到目前为止非常有意思,所以我想写点东西,展示一下我如何将它与 PyMongo 结合使用!

首先,显然需要执行 pip install pymongo。我们首先需要一个 Mongo 客户端,这很简单:

from pymongo import MongoClient

client = MongoClient()

这非常方便——默认情况下,MongoClient 会连接到 mongodb://localhost:27017

不过,你可能会想改用类似下面的方式:

url = os.environ.get("MONGO_URL", "mongodb://localhost:27017")
client = MongoClient(url)

我们需要在文档字段上创建一个 MongoDB 索引,才能使用地理空间功能。我们将创建一个 2dsphere 索引。

from pymongo import MongoClient, GEOSPHERE, DESCENDING

client = MongoClient()
db = client.foo
db.bar.create_index([("location", GEOSPHERE)])

现在只需要插入一个文档并运行查询即可 :) 我们将插入一个只有 location 字段的文档:

db.bar.insert_one({
	“location”: {
		"coordinates" : [ 
			51.4982563,
			-0.0861183
    		],
    		"type" : "Point"
	}
})

location 字段需要使用 GeoJSON,这是一种用于表示地理要素的 JSON 标准。这样一来,查询文档就非常容易了!

db.bar.find({
	"location": {
		"$near": {
			"$geometry": {"type": "Point", "coordinates": [LAT, LONG]},
			"$maxDistance": range,
		}
	}
})

原文由 Ellie Huxtable 发布

本文章由 openai/gpt-5.6-luna 进行翻译