MongoDB는 geospatial 데이터와 쿼리에 대한 내장 지원이 있습니다 — 위치(점, 영역)를 저장하고 근접성, 포함, 교차로 쿼리합니다. 2dsphere index와 GeoJSON을 사용하며, 별도의 geospatial 데이터베이스 없이 "내 주변 장소 찾기" 같은 기능을 구동합니다.
위치 데이터 저장 (GeoJSON)
db..({
: ,
: { : , : [-, ] }
});
db..({ : });
MongoDB는 geospatial 데이터와 쿼리에 대한 내장 지원이 있습니다 — 위치(점, 영역)를 저장하고 근접성, 포함, 교차로 쿼리합니다. 2dsphere index와 GeoJSON을 사용하며, 별도의 geospatial 데이터베이스 없이 "내 주변 장소 찾기" 같은 기능을 구동합니다.
db..({
: ,
: { : , : [-, ] }
});
db..({ : });
위치는 GeoJSON({ type: "Point", coordinates: [경도, 위도] } — 경도 먼저)으로 저장되며, 2dsphere index가 구(지구)에서 효율적인 geospatial 쿼리를 가능하게 합니다.
// $near — 점 근처의 document를 거리순으로 정렬하여 찾기
db.places.find({
location: {
$near: {
$geometry: { type: "Point", coordinates: [-73.97, 40.77] },
$maxDistance: 1000 // 1000미터 이내
}
}
});
// → 가까운 것부터 정렬된 결과 ("내 주변 장소"에 훌륭)
$near는 점 근처의 document를 거리순으로 반환하여 찾습니다 — "주변" 기능의 기초입니다.
// $geoWithin — 영역(polygon, circle) 안의 document 찾기
db.places.find({
location: {
$geoWithin: {
$centerSphere: [[-73.97, 40.77], 5 / 6378.1] // 5km 반경 이내
}
}
});
// $geoIntersects — 주어진 형태와 교차하는 geometry를 가진 document 찾기
db.zones.find({ area: { $geoIntersects: { $geometry: somePolygon } } });
$geoWithin은 영역(polygon/circle) 안의 document를 찾고, $geoIntersects는 형태와 교차하는 geometry를 찾습니다 — 영역 기반 쿼리용입니다.
geospatial 쿼리 지원은 위치 기반 기능에 가치 있는 MongoDB 능력이므로, 이를 이해하는 것은 위치를 다루는 애플리케이션(지도, 배달, 매장 찾기, 차량 공유, 소셜 체크인 — 점점 흔해지는 기능)에 유용한 지식입니다.
핵심 가치는 MongoDB가 geospatial 데이터(GeoJSON으로)를 저장하고 geospatial 쿼리를 직접 실행할 수 있다는 것입니다 — 근접성($near — "내 주변 장소", 거리순 정렬, 위치 검색 기능의 기초), 포함($geoWithin — 영역이나 반경 안의 document), 교차($geoIntersects — 형태와 겹치는 geometry)로 document를 찾으며 — 모두 지구의 구형 geometry를 고려하는 2dsphere index로 효율화됩니다.
이는 별도의 전문 geospatial 데이터베이스 없이 많은 위치 기반 기능을 MongoDB에서 직접 구축할 수 있음을 의미하여 스택을 단순화합니다.
실질적 필수 요소 — GeoJSON 저장(경도 먼저 좌표 순서, 흔한 함정과 함께), 2dsphere index 생성, 쿼리 연산자($near, $geoWithin, $geoIntersects) — 를 이해하면 실제 위치 기능을 구현할 수 있습니다.
위치 기반 기능이 점점 흔한 애플리케이션 요구이고, MongoDB가 이를 직접 처리하는 강력한 내장 geospatial 지원(저장, 근접/포함/교차 쿼리, 효율적 구형 indexing)을 제공하므로, MongoDB geospatial 쿼리 — GeoJSON 저장, 2dsphere index, 근접/포함 연산자 — 를 이해하는 것은 MongoDB에서 위치 인식 애플리케이션을 구축하는 데 가치 있고 실질적으로 관련된 지식이며, "위치 근처의 것 찾기"라는 흔한 요구에 유용한 능력입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기