지리 공간적 인덱스
지리 공간적 인덱스는 GeoJSON 객체 또는 레거시 좌표 쌍 으로 저장된 데이터에 대한 쿼리를 지원합니다. 지리 공간적 인덱스를 사용하여 지리 공간적 데이터에 대한 쿼리 성능을 향상시키거나 특정 지리 공간적 쿼리를 실행할 수 있습니다.
MongoDB는 다음과 같이 두 가지 유형의 지리 공간적 인덱스를 제공합니다.
2dsphere Indexes는 구의 형상을 해석하는 쿼리를 지원합니다.
2d Indexes는 평평한 표면의 형상을 해석하는 쿼리를 지원합니다.
지리 공간적 데이터 및 쿼리 작업에 대해 자세히 알아보려면 지리 공간적 쿼리를 참조하세요.
사용 사례
애플리케이션에서 지리 공간적 데이터가 포함된 필드를 자주 쿼리하는 경우, 지리 공간적 인덱스를 만들어 해당 쿼리의 성능을 개선할 수 있습니다.
특정 쿼리 작업에는 지리 공간적 인덱스가 필요합니다. 2} 또는 $nearSphere
연산자 또는 $near
집계 단계로 쿼리하려면 $geoNear
지리 공간적 인덱스를 만들어야 합니다. 자세한 내용은 지리 공간적 쿼리 연산자 및 지리 공간적 집계 단계를참조하세요.
예를 들어 도시의 지하철역 좌표를 지정하는 location
필드가 포함된 문서가 포함된 subway
컬렉션을 생각해 보십시오. $geoWithin
연산자로 쿼리를 실행하여 특정 지역 내의 방송국 목록을 반환하는 경우가 많습니다. 이 쿼리의 성능을 향상시키려면 location
필드에 지리 공간적 인덱스를 생성할 수 있습니다. 인덱스를 생성한 후 $near
연산자를 사용하여 쿼리하면 가까운 역부터 먼 역까지 정렬된 주변 역 목록을 반환할 수 있습니다.
일반적으로 쿼리되는 필드를 인덱싱하면 해당 쿼리를 처리할 가능성이 높아집니다. 포함된 쿼리는 문서를 검사하지 않고도 인덱스를 사용하여 완전히 충족할 수 있는 쿼리입니다. 이렇게 하면 쿼리 성능이 최적화됩니다.
시작하기
지리 공간적 인덱스를 만들고 지리 공간적 쿼리를 실행하려면 다음을 참조하세요:
세부 정보
이 섹션에서는 지리 공간적 인덱스에 대한 자세한 내용을 설명합니다.
샤드 컬렉션
컬렉션을 샤딩할 때는 위치 기반 정보 인덱스를 샤드 키로 사용할 수 없습니다. 그러나 다른 필드를 분할 키로 사용하여 분할된 컬렉션에 지리 공간적 인덱스를 생성할 수 있습니다.
지리 공간적 쿼리 연산자 및 집계 단계를 사용하여 샤드된 컬렉션의 지리 공간적 데이터를 쿼리할 수 있습니다.
MongoDB 4.0 이전 버전에서는 샤드된 컬렉션에 대해 $near
및 $nearSphere
쿼리가 지원되지 않습니다. 대신 $geoNear
집계 단계 또는 geoNear
명령을 사용할 수 있습니다.
지원되는 쿼리
지리 공간적 인덱스는 쿼리를 처리할 수 없습니다.
구형 쿼리
구형 데이터에 대한 쿼리에 2d
인덱스를 사용하면 잘못된 결과 또는 오류가 반환될 수 있습니다. 예를 들어, 2d
인덱스는 극점을 감싸는 구형 쿼리를 지원하지 않습니다.
그러나 구형 쿼리 와 2차원 쿼리 모두에 2dsphere
인덱스을 사용할 수 있습니다. 2차원 쿼리의 경우 2dsphere
인덱스는 레거시 좌표 쌍으로 저장된 데이터를 GeoJSON 포인트 유형으로 변환합니다.
자세히 알아보기
지리 공간적 쿼리 작업의 샘플은 지리 공간적 쿼리 예제를 참조하세요.