Docs Menu
Docs Home
/ /

구의 한 점 근처 위치 쿼리하기

구의 지정된 점 근처에 나타나는 위치 데이터를 쿼리 할 수 있습니다.

지정된 점 근처의 위치 데이터를 쿼리 하려면 $near 연산자 를 사용합니다.

db.<collection>.find( {
<location field> : {
$near : {
$geometry : {
type : "Point",
coordinates : [ <longitude>, <latitude> ]
},
$maxDistance : <distance in meters>
}
}
} )
  • 경도와 위도 좌표를 지정할 때는 경도를 먼저 입력한 다음 위도를 입력합니다.

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

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

  • $maxDistance 필드에 거리를 미터 단위 로 지정합니다.

  1. 이러한 문서가 포함된 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"
    }
    ] )

    loc 필드의 값은 GeoJSON 포인트입니다.

  2. $near 연산자 를 사용하여 위치 데이터를 쿼리 하려면 위치 데이터가 포함된 필드 에 지리 공간적 인덱스 를 만들어야 합니다.

    loc 필드 에 2dsphere 인덱스 를 생성합니다.

    db.places.createIndex( { "loc": "2dsphere" } )

컬렉션 을 쿼리 하려면 $near 를 사용합니다. 다음 $near 쿼리 는 [ -73.92, 40.78 ] 에 있는 GeoJSON 포인트 에서 5000 loc 필드 가 있는 문서를 반환합니다.

db.places.find( {
loc: {
$near: {
$geometry: {
type: "Point",
coordinates: [ -73.92, 40.78 ]
},
$maxDistance : 5000
}
}
} )

출력:

[
{
_id: ObjectId("63f7c3b15e5eefbdfef81cab"),
loc: { type: 'Point', coordinates: [ -73.88, 40.78 ] },
name: 'La Guardia Airport',
category: 'Airport'
},
{
_id: ObjectId("63f7c3b15e5eefbdfef81caa"),
loc: { type: 'Point', coordinates: [ -73.97, 40.77 ] },
name: 'Central Park',
category: 'Park'
}
]

결과는 쿼리된 점 으로부터의 거리를 기준으로 가장 가까운 것부터 가장 먼 것 순으로 정렬됩니다.

돌아가기

Polygons

이 페이지의 내용