평평한 표면의 한 점 근처 위치 쿼리
평평한 표면의 지정된 지점 근처에 표시되는 위치 데이터를 쿼리할 수 있습니다.
지정된 점 근처의 위치 데이터를 쿼리하려면 $near
연산자를 사용합니다.
db.<collection>.find( { <location field> : { $near : [ <longitude>, <latitude> ], $maxDistance : <distance in meters> } } )
이 작업에 대하여
$near
연산자에서 좌표 쌍을 지정할 때는 경도 를 먼저 나열한 다음 위도 를 나열합니다.유효한 경도 값은
-180
~180
입니다(둘 모두 포함).유효한 위도 값은
-90
~90
입니다(둘 모두 포함).
$maxDistance
필드에 거리를 미터 단위 로 지정합니다.
시작하기 전에
contacts
컬렉션을 생성합니다.db.contacts.insertMany( [ { name: "Evander Otylia", phone: "202-555-0193", address: [ 55.5, 42.3 ] }, { name: "Georgine Lestaw", phone: "714-555-0107", address: [ -74, 44.74 ] } ] ) address
필드에는 레거시 좌표 쌍이 포함되어 있습니다.$near
연산자를 사용하여 위치 데이터를 쿼리하려면 위치 데이터가 포함된 필드에 지리 공간적 인덱스 를 만들어야 합니다.address
필드에 2D 인덱스를 만듭니다.db.contacts.createIndex( { address: "2d" } )
절차
컬렉션을 쿼리하려면 $near
을(를) 사용합니다. 다음 $near
쿼리는 좌표 쌍 [ -73.92, 40.78 ]
에서 50미터 이내에 address
필드가 있는 문서를 반환합니다.
db.contacts.find( { address: { $near: [ -73.92, 40.78 ], $maxDistance : 50 } } )
출력:
[ { _id: ObjectId("640a3dd9c639b6f094b00e89"), name: 'Georgine Lestaw', phone: '714-555-0107', address: [ -74, 44.74 ] } ]
결과는 쿼리된 지점으로부터의 거리를 기준으로 가장 가까운 것부터 가장 먼 것까지 정렬됩니다.
자세히 알아보기
구형 표면에 대한 근접 쿼리를 수행하려면 구의 점 근처 위치 쿼리를 참조하세요.