Geospatial queries with MongoDB

Ellie Huxtable

使用 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,
		}
	}
})

本文章由 muse-spark-1.2-contributor 进行翻译

评论