Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

Haystack 인덱스 생성

중요

MongoDB 5.0에서 제거됨

MongoDB 5.0 은 더 이상 사용되지 않는 geoHaystack 인덱스 및 geoSearch 명령을 제거합니다. 대신 2d 인덱스$geoNear 또는 지원되는 지리 공간적 쿼리 연산자 중 하나와 함께 사용합니다.

MongoDB 인스턴스를 5.0으로 업그레이드하고 featureCompatibilityVersion을 5.0 로 설정하면 기존의 모든 geoHaystack 인덱스가 삭제됩니다.

헤이스택 인덱스는 위치 필드와 두 번째 필드, 이렇게 두 필드를 참조해야 합니다. 두 번째 필드는 정확한 일치에 사용됩니다. 헤이스택 인덱스는 위치와 단일 추가 기준에 대한 정확한 일치를 기반으로 문서를 반환합니다. 이러한 인덱스가 특정 위치로 가장 가까운 문서를 반환하는 데 반드시 적합한 것은 아닙니다.

haystack 인덱스를 빌드하려면 다음 구문을 사용하세요.

db.coll.createIndex( { <location field> : "geoHaystack" ,
<additional field> : 1 } ,
{ bucketSize : <bucket value> } )

haystack 인덱스를 빌드하려면 인덱스를 생성할 때 bucketSize 옵션을 지정해야 합니다. 5 bucketSize 은 지정된 경도 및 위도의 5 단위 내에 있는 위치 값을 그룹화하는 인덱스를 생성합니다. 또한 bucketSize 는 인덱스의 세분성을 결정합니다. 일반적으로 매우 작은 리전만 검색하도록 매개변수를 데이터 분포에 맞게 조정할 수 있습니다. 버킷으로 정의된 영역은 겹칠 수 있습니다. 문서는 여러 버킷에 존재할 수 있습니다.

예제

다음과 유사한 필드가 포함된 문서가 포함된 컬렉션이 있는 경우:

{ _id : 100, pos: { lng : 126.9, lat : 35.2 } , type : "restaurant"}
{ _id : 200, pos: { lng : 127.5, lat : 36.1 } , type : "restaurant"}
{ _id : 300, pos: { lng : 128.0, lat : 36.7 } , type : "national park"}

다음 작업은 경도 또는 위도의 1 단위 내에 키를 저장하는 버킷이 있는 haystack 인덱스를 생성합니다.

db.places.createIndex( { pos : "geoHaystack", type : 1 } ,
{ bucketSize : 1 } )

이 인덱스는 값이 200_id 필드가 있는 문서를 두 개의 서로 다른 버킷에 저장합니다.

  • _id 필드 값이 100인 문서가 포함된 버킷에서

  • _id 필드 값이 300인 문서가 포함된 버킷에서

haystack 인덱스를 사용하여 쿼리하려면 geoSearch 명령을 사용합니다. Haystack 인덱스 쿼리를 참조하세요.

기본적으로 헤이스택 인덱스를 사용하는 쿼리는 50 문서를 반환합니다.

돌아가기

geohaystack