Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

구형 기하학을 사용하여 거리 계산

경고

구형 쿼리의 경우 2dsphere 인덱스 결과를 사용합니다.

구형 쿼리에 2d 인덱스를 사용하면 극점을 감싸는 구형 쿼리에 2d 인덱스를 사용하는 것처럼 잘못된 결과가 발생할 수 있습니다.

2d 인덱스는 유클리드 평면(평면)에서 거리를 계산하는 쿼리를 지원합니다. 인덱스는 구형 기하학을 사용하여 거리를 계산하는 다음 쿼리 연산자 및 명령도 지원합니다.

참고

구형 거리를 사용하는 기본 쿼리는 2d 인덱스에서 지원되지만 데이터가 주로 경도와 위도인 경우 2dsphere 인덱스로 이동하는 것이 좋습니다.

  • $nearSphere

  • $centerSphere

  • $near

  • spherical: true 옵션이 포함된 $geoNear 파이프라인 단계

중요

앞서 언급한 연산에서는 거리에 라디안을 사용합니다. $geoWithin 와 같은 다른 구형 쿼리 연산자는 그렇지 않습니다.

구형 쿼리 연산자가 제대로 작동하려면 거리를 라디안으로 변환하고 라디안에서 애플리케이션에서 사용하는 거리 단위로 변환해야 합니다.

변환하려면 다음을 수행합니다.

  • 라디안으로 의 거리 : 거리 측정과 동일한 단위로 거리를 구(예: 지구)의 반지름으로 나눕니다.

  • 라디안을 거리로: 거리를 변환하려는 단위계에서 라디안 측정값에 구(예: 지구)의 반지름을 곱합니다.

지구의 적도 반경은 약 3,963.2 마일 또는 6,378.1 킬로미터입니다.

다음 쿼리는 반경이 100 마일인 중심 [ -74, 40.74 ] 로 설명된 원 내의 places 컬렉션에서 문서를 반환합니다.

db.places.find( { loc: { $geoWithin: { $centerSphere: [ [ -74, 40.74 ] ,
100 / 3963.2 ] } } } )

참고

중요

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

  • 유효한 경도 값은 -180~180입니다(둘 모두 포함).

  • 유효한 위도 값은 -90~90입니다(둘 모두 포함).

돌아가기

2D 인덱스 내부