Geospatial queries with MongoDB

Ellie Huxtable

MongoDB로 하는 지리 공간 쿼리

원문은 Ellie Huxtable님이 에 게재했습니다. 이 블로그 구독하기

요즘 MongoDB와 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 형식이어야 합니다. GeoJSON은 지리 정보를 표현하기 위한 JSON 표준인데, 덕분에 문서를 쿼리하기가 정말 쉬워집니다!

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

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글