Docs Menu
Docs Home
/ /

지리적 공간 인덱스 제한

2d2dsphere 인덱스는 지리 공간적 인덱스입니다. 지리 공간적 인덱스에는 다음과 같은 제한 사항이 있습니다.

2d 인덱스는 데이터 정렬 옵션을 지원하지 않고 바이너리 비교만 지원합니다. 이진 비교는 각 문자열에 있는 각 문자의 숫자 유니코드 값을 비교하며, 대소문자나 악센트 표시는 고려하지 않습니다.

단순 데이터 정렬이 아닌 collection에 2D 인덱스를 만들려면 인덱스를 만들 때 { collation: { locale: "simple" } } 을(를) 명시적으로 지정해야 합니다.

예를 들어 { locale: "en" }의 데이터 정렬이 포함된 collationTest 컬렉션을 생각해 보겠습니다.

db.createCollection(
"collationTest",
{
collation: { locale: "en" }
}
)

collationTest 컬렉션에 2D 인덱스를 생성하려면 { collation: { locale: "simple" } }을 지정해야 합니다. 이 명령은 loc 필드에 2D 인덱스를 생성합니다.

db.collationTest.createIndex(
{
loc: "2d"
},
{
collation: { locale: "simple" }
}
)

지리 공간적 인덱스는 쿼리를 처리할 수 없습니다.

지리 공간적 인덱스는 샤드 키로 사용할 수 없습니다. 그러나 다른 필드를 샤드 키로 사용하여 샤딩된 컬렉션에 지리 공간적 인덱스를 생성할 수 있습니다.

컬렉션에 지리공간 인덱스가 여러 개 있는 경우 $geoNear 파이프라인 단계를 실행할 때 $geoNear key 옵션을 지정해야 합니다. key 옵션은 쿼리를 지원하는 데 사용할 인덱스를 지정합니다.

2dsphere 인덱스로 인덱싱된 필드에는 도형 데이터가 포함되어야 합니다. 도형 데이터는 다음 중 하나일 수 있습니다.

다음을 수행할 수 없습니다.

  • 도형이 아닌 데이터가 있는 문서 를 2dsphere 인덱스 로 인덱싱된 필드 에 삽입합니다.

  • 비형상 데이터가 포함된 필드에 2dsphere 인덱스를 빌드합니다.

2dsphere 인덱스를 생성하면 mongodGeoJSON 도형을 내부 표현에 매핑합니다. 결과적인 내부 표현은 큰 값 배열일 수 있습니다.

indexMaxNumGeneratedKeysPerDocument 설정은 메모리 부족 오류를 방지하기 위해 단일 문서에 대해 생성되는 최대 키 수를 제한합니다. 작업에 indexMaxNumGeneratedKeysPerDocument 매개 변수가 지정하는 것보다 더 많은 키가 필요한 경우 작업이 실패합니다.

기본적으로 서버는 문서당 인덱스 키를 최대 100,000개 허용합니다. 인덱스 키를 더 많이 허용하려면 indexMaxNumGeneratedKeysPerDocument 값을 높이세요.

2d 인덱스는 좌표 쌍에서 정확히 일치하는 항목의 성능을 향상할 수 없습니다.

예를 들어 이러한 문서가 포함된contacts 컬렉션을 생각해 보겠습니다:

db.contacts.insertMany( [
{
name: "Evander Otylia",
phone: "202-555-0193",
address: [ 55.5, 42.3 ]
},
{
name: "Georgine Lestaw",
phone: "714-555-0107",
address: [ -74, 44.74 ]
}
] )

address 필드의 2d 인덱스는 다음 쿼리의 성능을 향상시키지 않습니다.

db.contacts.find( { address: [ 55.5, 42.3 ] } )

이 쿼리의 성능을 개선하려면 다음과 같이 address 필드에 오름차순 또는 내림차순 인덱스를 만듭니다.

db.contacts.createIndex( { address: 1 } )

돌아가기

라디안으로 계산

이 페이지의 내용