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」を使用して翻訳されました。

コメント