중요
MongoDB 5.0에서 제거됨
MongoDB 5.0 은 더 이상 사용되지 않는 geoHaystack 인덱스 와 geoSearch 명령을 제거합니다. 대신 또는 지원되는 지리 $geoNear 공간적 쿼리2연산자 중 하나와 함께 d 인덱스 를 사용합니다.
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인 문서 가 포함된 버킷에서
헤이스택 인덱스 사용하여 쿼리 하려면 geoSearch 명령을 사용합니다. Haystack 인덱스 쿼리를 참조하세요.
기본값 으로 헤이스택 인덱스 를 사용하는 쿼리는 50 문서를 반환합니다.