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,
}
}
})글을 무작위로 읽기
댓글
로그인하고 댓글 남기기