지정된 다각형 경계 내의 위치 데이터를 쿼리할 수 있습니다.
경계 내의 위치 데이터를 쿼리 하려면 $geoWithin 연산자 를 사용하고 다각형 꼭짓점의 좌표를 지정합니다.
db.<collection>.find( { <location field> : { $geoWithin : { $geometry : { type : "Polygon", coordinates : [ <coordinates> ] } } } } )
이 작업에 대하여
$geoWithin연산자로 쿼리하는 필드의 값은 GeoJSON 형식이어야 합니다.경도와 위도 좌표를 지정할 때는 경도를 먼저 입력한 다음 위도를 입력합니다.
유효한 경도 값은
-180~180입니다(둘 모두 포함).유효한 위도 값은
-90~90입니다(둘 모두 포함).
다각형
coordinates을 지정하는 경우 배열의 첫 번째 좌표와 마지막 좌표가 동일해야 합니다. 이렇게 하면 다각형의 경계가 닫힙니다.$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" } ] )
절차
컬렉션을 쿼리하려면 $geoWithin 을(를) 사용합니다. 다음 $geoWithin 쿼리는 꼭짓점 4개가 있는 다각형(사각형)을 지정하고 해당 다각형 내의 점을 반환합니다.
db.places.find( { loc: { $geoWithin: { $geometry: { type: "Polygon", coordinates: [ [ [ -73.95, 40.80 ], [ -73.94, 40.79 ], [ -73.97, 40.76 ], [ -73.98, 40.76 ], [ -73.95, 40.80 ] ] ] } } } } )
출력:
[ { _id: ObjectId("63a4a8d67348ebdcd0a061f0"), loc: { type: 'Point', coordinates: [ -73.97, 40.77 ] }, name: 'Central Park', category: 'Park' } ]