Docs Menu
Docs Home
/ /

2D 인덱스의 위치 범위 정의

2d 인덱스 에 포함된 좌표 범위 를 정의할 수 있습니다. 기본값 으로 2d 인덱스의 경도 및 위도 경계는 다음과 같습니다.

  • 크거나 같음 -180

  • 보다 작은 180

2D 인덱스의 위치 범위를 변경하려면 인덱스를 생성할 때 minmax 옵션을 지정합니다.

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

minmax 경계는 포괄적 이며 경도와 위도 모두에 적용됩니다.

중요

2D 인덱스의 기본 위치 경계는 유효하지 않은 값인 -90 미만과 90보다 큰 위도를 허용합니다. 이러한 유효하지 않은 점이 있는 지리 공간적 쿼리의 동작은 정의되어 있지 않습니다.

2D 인덱스에 대해 더 작은 위치 범위를 정의하면 인덱스에 저장되는 데이터의 양이 줄어들고 쿼리 성능이 향상될 수 있습니다.

collection에 인덱스의 위치 범위를 벗어난 좌표 데이터가 포함된 경우 2D 인덱스를 만들 수 없습니다.

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 필드에는 레거시 좌표 쌍이 포함되어 있습니다.

address 필드에 2D 인덱스를 만듭니다. 다음 위치 경계를 지정합니다:

  • min ~의 경계 -75

  • max ~의 경계 60

db.contacts.createIndex(
{
address: "2d"
},
{
min: -75,
max: 60
}
)

이 인덱스는 위치 범위가 더 좁으며 기본 2D 인덱스보다 성능이 향상되었습니다.

인덱스를 생성한 후에는 인덱스의 위치 범위를 벗어난 좌표 데이터가 포함된 문서를 삽입할 수 없습니다. 예를 들어, 다음 문서는 삽입할 수 없습니다 :

db.contacts.insertOne(
{
name: "Paige Polson",
phone: "402-555-0190",
address: [ 70, 42.3 ]
}
)

address 필드의 경도 값은 70 이며, 이는 60max 경계보다 높습니다.

2D 인덱스를 사용하여 근접 쿼리와 같은 위치 데이터에 대한 계산을 수행할 수 있습니다.

돌아가기

위치 정밀도

이 페이지의 내용