문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

2d 인덱스생성

이 페이지의 내용

  • 2d 인덱스의 위치 범위 정의
  • 2d 인덱스에 대한 위치 정밀도 정의

지리 공간적 2d 인덱스를 빌드하려면 db.collection.createIndex() 메서드를 사용하고 2d 를 지정합니다. 다음 구문을 사용합니다.

db.<collection>.createIndex( { <location field> : "2d" ,
<additional field> : <value> } ,
{ <index-specification options> } )

2d 인덱스는 다음과 같은 선택적 인덱스 사양 옵션을 사용합니다.

{ min : <lower bound> , max : <upper bound> ,
bits : <bit precision> }

기본적으로 2d 인덱스는 경도와 위도를 가정하며 경계가 -180( 포함 ) 및 180( 비포함)입니다. 문서에 지정된 범위를 벗어난 좌표 데이터가 포함되어 있으면 MongoDB는 오류를 반환합니다.

중요

기본 경계를 사용하면 애플리케이션에서 위도가 90보다 크거나 -90보다 작은 문서를 삽입할 수 있습니다. 이러한 유효하지 않은 점이 있는 지리 공간적 쿼리의 동작은 정의되어 있지 않습니다.

2d 인덱스에서 위치 범위를 변경할 수 있습니다.

기본값이 아닌 위치 범위를 사용하여 2d 지리 공간적 인덱스를 빌드할 수 있습니다. 인덱스를 생성할 때 minmax 옵션을 사용합니다. 다음 구문을 사용합니다.

db.collection.createIndex( { <location field> : "2d" } ,
{ min : <lower bound> , max : <upper bound> } )

기본적으로 legacy coordinate pairs의 2d 인덱스는 26비트 정밀도를 사용하며, 이는 -180~180의 기본 범위를 사용할 때 2 피트 또는 60 cm에 해당합니다. 정밀도는 위치 데이터를 저장하는 데 사용되는 geohash 값의 크기(비트)로 측정됩니다. 최대 32비트 정밀도로 지리 공간적 인덱스를 구성할 수 있습니다.

인덱스 정밀도는 쿼리 정확도에 영향을 주지 않습니다. 실제 그리드 좌표는 항상 최종 쿼리 처리에 사용됩니다. 정밀도가 낮을 때의 장점은 삽입 작업의 처리 오버헤드가 적고 공간을 덜 차지한다는 점입니다. 정밀도가 높을수록 얻을 수 있는 이점은 쿼리가 인덱스의 더 작은 부분을 스캔하여 결과를 반환한다는 점입니다.

기본값이 아닌 위치 정밀도를 구성하려면 인덱스를 생성할 때 bits 옵션을 사용합니다. 다음 구문을 사용합니다.

db.<collection>.createIndex( {<location field> : "<index type>"} ,
{ bits : <bit precision> } )

geohash 값의 내부에 대한 자세한 내용 2d 인덱스에 대한 geohash 값 계산을 참조하세요.

← 2d 인덱스