문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

$nearSphere

이 페이지의 내용

  • 정의
  • 행동
  • 예제
$nearSphere

지리 공간적 쿼리가 가장 가까운 문서부터 가장 먼 문서까지 반환하는 지점을 지정합니다. MongoDB는 구형 기하학을 사용하여 $nearSphere 의 거리를 계산합니다.

$nearSphere 지리적 공간 인덱스가 필요합니다.

  • GeoJSON 포인트로 정의된 위치 데이터에 대한 2D 구 인덱스입니다.

  • 레거시 좌표 쌍으로 정의된 위치 데이터에 대한 2D 인덱스입니다. GeoJSON 포인트2d 인덱스를 사용하려면 GeoJSON 객체의 coordinates 필드에 인덱스를 생성합니다.

$nearSphere 연산자는 GeoJSON 점 또는 레거시 좌표 점 중 하나를 지정할 수 있습니다.

GeoJSON 포인트를 지정하려면 다음 구문을 사용합니다.

{
$nearSphere: {
$geometry: {
type : "Point",
coordinates : [ <longitude>, <latitude> ]
},
$minDistance: <distance in meters>,
$maxDistance: <distance in meters>
}
}
  • 선택 사항$minDistance는 중심점에서 최소 지정된 거리에 있는 문서로 결과를 제한합니다.

  • 각 인덱스에 대해 선택 사항$maxDistance를 사용할 수 있습니다.

기존 좌표를 사용하여 포인트를 지정하려면 다음 구문을 사용합니다.

{
$nearSphere: [ <x>, <y> ],
$minDistance: <distance in radians>,
$maxDistance: <distance in radians>
}
  • 선택 사항$minDistance는 쿼리가 2D 구 인덱스를 사용하는 경우에만 사용할 수 있습니다. $minDistance는 중심점에서 최소 지정된 거리에 있는 문서로 결과를 제한합니다.

  • 각 인덱스에 대해 선택 사항$maxDistance를 사용할 수 있습니다.

레거시 좌표에 경도와 위도를 사용하는 경우 경도를 먼저 지정한 다음 위도를 지정합니다.

특수 지리 공간적 $nearSphere 인덱스 가 필요한 연산자를 다른 특수 인덱스가 필요한 쿼리 연산자 또는 명령과 결합할 수 없습니다. 예를 들어 $nearSphere $text 를 쿼리와 결합할 수 없습니다.

MongoDB 4 이전 버전.0, $nearSphere 쿼리는 샤드 컬렉션에 지원되지 않습니다. 대신 $geoNear 애그리게이션 단계 또는 geoNear 명령을 사용할 수 있습니다.

$nearSphere 연산자는 거리별로 문서를 정렬합니다.

  • 쿼리에 sort() 메서드를 사용하는 경우 MongoDB는 두 번째 정렬 작업을 수행하여 일치하는 문서의 순서를 다시 지정합니다. 대규모 컬렉션을 쿼리할 경우 쿼리 성능에 부정적인 영향을 미칠 수 있습니다.

  • 문서의 순서가 중요하지 않은 경우, 정렬되지 않은 결과를 반환하는 $geoWithin 연산자를 대신 사용하는 것이 좋습니다.

  • $nearSphere 일치 실행 연산자이며 집계 파이프라인에서는 허용되지 않습니다.

location 필드가 있는 문서를 고 포함하2D 구 인덱스가 있는 컬렉션 places를 가정해 보겠습니다.

그런 다음 다음 예시에서는 지정된 지점에서 최소 1000미터에서 최대 5000미터 떨어진 location을 가장 가까운 곳에서 가장 먼 곳 순으로 반환합니다.

db.places.find(
{
location: {
$nearSphere: {
$geometry: {
type : "Point",
coordinates : [ -73.9667, 40.78 ]
},
$minDistance: 1000,
$maxDistance: 5000
}
}
}
)

location 필드에 레거시 좌표 쌍이 있는 문서를 포함하고 2D 인덱스가 있는 컬렉션 legacyPlaces 경우를 가정해 보겠습니다.

그런 다음 다음 예시에서는 지정된 지점에서 location이 최대 0.10 라디안인 문서를 가장 가까운 것부터 가장 먼 것까지 순서대로 반환합니다.

db.legacyPlaces.find(
{ location : { $nearSphere : [ -73.9667, 40.78 ], $maxDistance: 0.10 } }
)

컬렉션에 대신 2dsphere 인덱스가 있는 경우 선택 사항인 $minDistance 사양을 지정할 수도 있습니다. 예를 들어, 다음 예에서는 location이 지정된 지점으로부터 최소 0.0004 라디안인 문서를 가장 가까운 것부터 가장 먼 것 순으로 반환합니다.

db.legacyPlaces.find(
{ location : { $nearSphere : [ -73.9667, 40.78 ], $minDistance: 0.0004 } }
)
← $near
$box →

이 페이지의 내용