Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

$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 중심점에서 최대 지정된 거리에 있는 문서로 결과를 제한합니다.

레거시 좌표를 사용하여 점을 지정하려면 $near2D 인덱스가 필요하며 구문은 다음과 같습니다.

{
$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인지 검증합니다. 다른 입력 유형은 오류를 반환합니다.

중요

위도 및 경도 좌표를 지정하는 경우 경도를 먼저 나열한 다음 위도를 나열합니다.

  • 유효한 경도 값은 -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 } }
)

돌아가기

$geoWithin

이 페이지의 내용