문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / / / /

구의 원 내 위치 쿼리하기

이 페이지의 내용

  • 이 작업에 대하여
  • 시작하기 전에
  • 절차
  • 자세히 알아보기

구 표면의 원 내에서 위치 데이터를 쿼리할 수 있습니다. 이 쿼리를 사용하여 구형 대문자 내의 데이터를 반환합니다.

구의 원 내의$geoWithin 위치 $centerSphere 데이터를 쿼리하려면 연산자와 함께 를 사용합니다. 연산자에서 $centerSphere 쿼리할 원의 좌표와 반지름을 지정합니다.

db.<collection>.find( {
<location field> : {
$geoWithin : {
$centerSphere: [
[ <longitude>, <latitude> ],
<radius>
]
}
}
} )
  • 경도와 위도 좌표를 지정할 때는 경도를 먼저 입력한 다음 위도를 입력합니다.

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

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

  • $centerSphere 연산자에서 원의 반지름을 라디안 단위 로 지정합니다. 다른 단위를 라디안으로 변환하려면 구형 연산자에 대해 거리를 라디안으로 변환을 참조하세요.

    • 이 예제에서는 거리를 킬로미터 단위로 계산합니다. 킬로미터를 라디안으로 변환하려면 킬로미터 값을 6378.1 으로 나눕니다.

  • $geoWithin 지리 공간적 공간 인덱스가 필요하지 않습니다. 그러나 지리 공간적 공간 인덱스는 쿼리 성능을 향상시킵니다. 2dsphere 지리 공간적 인덱스만 $geoWithin 을 지원합니다. 자세한 내용은 2dsphere 인덱스 만들기를 참조하세요.

이러한 문서가 포함된 places 컬렉션을 만듭니다.

db.places.insertMany( [
{
loc: { type: "Point", coordinates: [ -73.97, 40.77 ] },
name: "Central Park",
category : "Park"
},
{
loc: { type: "Point", coordinates: [ -73.88, 40.78 ] },
name: "La Guardia Airport",
category: "Airport"
},
{
loc: { type: "Point", coordinates: [ -1.83, 51.18 ] },
name: "Stonehenge",
category : "Monument"
}
] )

collection을 쿼리하려면 $centerSphere 연산자와 함께 $geoWithin 를 사용합니다.

db.places.find( {
loc: {
$geoWithin: {
$centerSphere: [
[ -1.76, 51.16 ],
10 / 6378.1
]
}
}
} )

쿼리는 loc 필드가 경도 -1.76, 위도 51.16 에 있는 점에서 반경 10킬로미터 이내에 있는 문서를 반환합니다.

출력:

[
{
_id: ObjectId("63fd205e4a08b5e248c03e32"),
loc: { type: 'Point', coordinates: [ -1.83, 51.18 ] },
name: 'Stonehenge',
category: 'Monument'
}
]

돌아가기

교차로

다음

버전