Geospatial queries with MongoDB

Ellie Huxtable

使用 MongoDB 進行地理空間查詢

原文由 Ellie Huxtable 發布,訂閱此部落格

最近在玩 MongoDB 和它的地理空間查詢。目前為止覺得還滿有趣的,所以想寫篇文章來分享我是怎麼搭配 PyMongo 使用的!

首先,當然需要先執行 pip install pymongo。我們得先建立一個 mongo client,這很簡單

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 進行翻譯

留言