使用 MongoDB 进行地理空间查询
原文由 Ellie Huxtable 于 发布,订阅该博客
最近我在折腾 MongoDB 及其地理空间查询功能。目前体验下来挺有意思的,所以就想写篇文章,分享一下我是如何结合 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,
}
}
})随机一篇博客
评论
登录后参与讨论