$near
정의
$near
지리 공간적 쿼리 가 가장 가까운 문서부터 가장 먼 문서 순으로 반환하는 점 을 지정합니다.
$near
연산자 는 GeoJSON 점 또는 레거시 좌표 점 을 지정할 수 있습니다.$near
지리 공간적 인덱스가 필요합니다.GeoJSON 점을 지정하는 경우2dsphere 인덱스입니다.
기존 좌표를 사용하여 점을 지정하는 경우 2d 인덱스입니다.
GeoJSON 포인트를 지정하려면
$near
연산자에 2dsphere 인덱스가 필요하며 구문은 다음과 같습니다:{ <location field>: { $near: { $geometry: { type: "Point" , coordinates: [ <longitude> , <latitude> ] }, $maxDistance: <distance in meters>, $minDistance: <distance in meters> } } } 중요
위도 및 경도 좌표를 지정하는 경우 경도를 먼저 나열한 다음 위도를 나열합니다.
유효한 경도 값은
-180
~180
입니다(둘 모두 포함).유효한 위도 값은
-90
~90
입니다(둘 모두 포함).
GeoJSON 포인트를 지정할 때는 선택 사항인
$minDistance
및$maxDistance
사양을 사용하여$near
결과를 미터 단위의 거리로 제한할 수 있습니다.$minDistance
중심점에서 최소 지정된 거리에 있는 문서로 결과를 제한합니다.$maxDistance
중심점에서 최대 지정된 거리에 있는 문서로 결과를 제한합니다.
레거시 좌표를 사용하여 점을 지정하려면
$near
에 2D 인덱스가 필요하며 구문은 다음과 같습니다.{ $near: [ <x>, <y> ], $maxDistance: <distance in radians> } 레거시 좌표를 지정할 때 선택 사항인
$maxDistance
지정을 사용하여 라디안 단위의 거리로$near
결과를 제한할 수 있습니다.$maxDistance
중심점에서 최대 지정된 거리에 있는 문서로 결과를 제한합니다.
행동
특별 인덱스 제한
특수 지리 공간적 인덱스가 필요한 연산자는 다른 특수 인덱스가 필요한 $near
쿼리 연산자 또는 명령과 결합할 수 없습니다. 예를 들어, $near
와 $text
쿼리를 결합할 수 없습니다.
정렬 작업
$near
} 연산자는 거리별로 문서를 거리 기준으로 정렬합니다.
쿼리에
sort()
메서드를 사용하는 경우 MongoDB는 두 번째 정렬 작업을 수행하여 일치하는 문서의 순서를 다시 지정합니다. 대규모 컬렉션을 쿼리할 경우 쿼리 성능에 부정적인 영향을 미칠 수 있습니다.문서의 순서가 중요하지 않은 경우, 정렬되지 않은 결과를 반환하는
$geoWithin
연산자를 대신 사용하는 것이 좋습니다.$near
일치 실행 연산자이며 집계 파이프라인에서는 허용되지 않습니다.
유효성 검사
MongoDB 8.0부터 $near
, $nearSphere
, 및 $geoNear
는 지정된 GeoJSON 포인트의 타입이 Point
인지 검증합니다. 다른 입력 유형은 오류를 반환합니다.
예시
GeoJSON 데이터에 대한 쿼리
중요
위도 및 경도 좌표를 지정하는 경우 경도를 먼저 나열한 다음 위도를 나열합니다.
유효한 경도 값은
-180
~180
입니다(둘 모두 포함).유효한 위도 값은
-90
~90
입니다(둘 모두 포함).
2dsphere
인덱스가 있는 컬렉션 places
를 고려합니다.
다음 예에서는 지정된 GeoJSON 지점에서 최소 1000
미터, 최대 5000
미터 떨어진 문서를 가장 가까운 것부터 가장 먼 것까지 정렬하여 반환합니다.
db.places.find( { location: { $near : { $geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, $minDistance: 1000, $maxDistance: 5000 } } } )
레거시 좌표에 대한 쿼리
중요
위도 및 경도 좌표를 지정하는 경우 경도를 먼저 나열한 다음 위도를 나열합니다.
유효한 경도 값은
-180
~180
입니다(둘 모두 포함).유효한 위도 값은
-90
~90
입니다(둘 모두 포함).
2d
인덱스가 있는 컬렉션 legacy2d
를 고려합니다.
다음 예에서는 지정된 레거시 좌표 쌍에서 최대 0.10
라디안인 문서를 가장 가까운 것부터 가장 먼 것 순으로 정렬하여 반환합니다.
db.legacy2d.find( { location : { $near : [ -73.9667, 40.78 ], $maxDistance: 0.10 } } )