인덱스 2d
쿼리
다음 섹션에서는 2d
인덱스에서 지원하는 쿼리에 대해 설명합니다.
평평한 표면에 정의된 모양 내의 점
평평한 표면의 지정된 모양 내에서 발견된 모든 legacy coordinate pairs 을 선택하려면 $geoWithin
연산자 와 모양 연산자 를 함께 사용합니다. 다음 구문을 사용합니다.
db.<collection>.find( { <location field> : { $geoWithin : { $box|$polygon|$center : <coordinates> } } } )
다음은 왼쪽 하단의 [ 0
, 0 ]
와 오른쪽 상단의 [ 100 , 100 ]
로 정의된 사각형 내의 문서를 쿼리합니다.
db.places.find( { loc : { $geoWithin : { $box : [ [ 0 , 0 ] , [ 100 , 100 ] ] } } } )
다음은 [ -74 , 40.74 ]
을 중심으로 반지름이 10
인 원 내에 있는 문서를 쿼리합니다.
db.places.find( { loc: { $geoWithin : { $center : [ [-74, 40.74 ] , 10 ] } } } )
각 도형에 대한 구문 및 예제는 다음을 참조하세요.
구에 정의된 원 내의 점
MongoDB는 레거시 이유로 플랫 2d
인덱스에 대한 기본적인 구형 쿼리를 지원합니다. 일반적으로 구형 계산은2dsphere
인덱스에 설명된 대로 2dsphere
인덱스를 사용해야 합니다
구의 '구형 대문자'에 있는 legacy coordinate pairs을 쿼리하려면 연산자와 함께 를 $geoWithin
$centerSphere
사용합니다. 다음을 포함하는 배열을 지정합니다.
원 중심점의 격자 좌표
라디안 단위로 측정한 원의 반지름입니다. 라디안을 계산하려면 구형 기하학을 사용하여 거리 계산을 참조하세요.
다음 구문을 사용합니다.
db.<collection>.find( { <location field> : { $geoWithin : { $centerSphere : [ [ <x>, <y> ] , <radius> ] } } } )
다음 예제 쿼리는 경도 88 W
및 위도 30 N
10마일 반경 내의 모든 문서를 반환합니다. 이 예에서는 거리를 지구의 대략적인 적도 반경인 3963.2마일로 나누어 거리를 라디안으로 변환합니다.
db.<collection>.find( { loc : { $geoWithin : { $centerSphere : [ [ 88 , 30 ] , 10 / 3963.2 ] } } } )
평평한 표면의 점에 대한 근접성
근접 쿼리는 정의된 지점에 가장 가까운 레거시 좌표 쌍을 반환하고 거리를 기준으로 결과를 정렬합니다. $near
연산자 중 하나를 사용합니다. 연산자에는 2d
인덱스가 필요합니다.
$near
연산자는 다음 구문을 사용합니다:
db.<collection>.find( { <location field> : { $near : [ <x> , <y> ] } } )
예를 보려면 $near
을(를) 참조하세요.
평평한 표면에서의 정확한 일치
2d
인덱스를 사용하여 좌표 쌍과 정확히 일치하는 항목을 반환할 수 없습니다. 좌표를 저장하는 필드에 오름차순 또는 내림차순 스칼라 인덱스를 사용하여 정확히 일치하는 항목을 반환합니다.
다음 예제에서 {
'loc': 1}
인덱스가 있는 경우 find()
연산은 위치에서 정확히 일치하는 항목을 반환합니다.
db.<collection>.find( { loc: [ <x> , <y> ] } )
이 쿼리는 [ <x> , <y> ]
값을 가진 모든 문서를 반환합니다.