정의
- $geoWithin
- 지정된 모양 안에만 존재하는 지리 공간적 데이터가 있는 문서를 선택합니다. - 지정된 모양은 GeoJSON - Polygon(단일 고리 또는 다중 고리), GeoJSON- MultiPolygon또는 기존 좌표 쌍으로 정의된 모양일 수 있습니다.- $geoWithin연산자는- $geometry연산자를 사용하여 GeoJSON 객체를 지정합니다.- 기본 좌표계(CRS)를 사용하여 GeoJSON 다각형 또는 다중 다각형을 지정하려면 다음 구문을 사용합니다. - { - <location field>: { - $geoWithin: { - $geometry: { - type: <"Polygon" or "MultiPolygon"> , - coordinates: [ <coordinates> ] - } - } - } - } - 단일 반구보다 면적이 큰 GeoJSON 도형을 지정하는 - $geoWithin쿼리의 경우, 기본 CRS를 사용하면 보완적인 도형에 대한 쿼리가 생성됩니다.- 사용자 지정 MongoDB CRS를 사용하여 단일 고리 GeoJSON 다각형을 지정하려면 - $geometry표현식에 사용자 지정 MongoDB CRS를 지정하는 다음 프로토타입을 사용하세요.- { - <location field>: { - $geoWithin: { - $geometry: { - type: "Polygon" , - coordinates: [ <coordinates> ], - crs: { - type: "name", - properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" } - } - } - } - } - } - 사용자 지정 MongoDB CRS는 시계 반대 방향의 와인딩 순서를 사용하며, - $geoWithin가 단일 반구보다 크거나 같은 면적을 갖는 단일 고리 GeoJSON 다각형이 있는 쿼리를 지원할 수 있도록 합니다. 지정된 다각형이 단일 반구보다 작은 경우 MongoDB CRS를 사용한- $geoWithin의 동작은 기본 CRS를 사용한 경우와 동일합니다. '큰' 다각형도 참조하세요.- 평면의 레거시 좌표 쌍으로 정의된 모양에 포함되도록 쿼리하는 경우 다음 구문을 사용합니다. - { - <location field>: { - $geoWithin: { <shape operator>: <coordinates> } - } - } - 사용 가능한 모양 연산자는 다음과 같습니다. - $center(원을 정의합니다), 그리고
- $centerSphere(구의 원을 정의합니다).
 - 중요- 경도와 위도를 사용하는 경우 - longitude, latitude순으로 좌표를 지정합니다.
행동
지리 공간적 인덱스
$geoWithin에는 지리 공간적 인덱스가 필요하지 않습니다. 그러나 지리 공간적 인덱스는 쿼리 성능을 향상합니다. 2dsphere와 2d 지리 공간적 인덱스 모두 $geoWithin를 지원합니다.
정렬되지 않은 결과
$geoWithin 연산자는 정렬된 결과를 반환하지 않습니다. 따라서 MongoDB는 결과를 정렬하는 지리 공간적 $near 또는 $nearSphere 쿼리보다 $geoWithin 쿼리를 더 빠르게 반환할 수 있습니다.
지오메트리 퇴화
$geoWithin 다각형을 포함한다고 보장하지 않습니다. 그 구성 요소 지오메트리를 포함하거나 구성 요소 지오메트리를 공유하는 다른 폴리곤을 포함한다고 보장하지 않습니다.
'큰' 다각형
$geoWithin의 경우 단일 반구보다 큰 면적을 가진 단일 고리 다각형을 지정할 때 $geometry 표현식에 사용자 지정 MongoDB 좌표 참조 시스템을 포함하세요. 그렇지 않은 경우, $geoWithin는 보완 지오메트리를 쿼리합니다. 반구보다 큰 면적을 가진 다른 모든 GeoJSON 다각형의 경우 $geoWithin는 보완 지오메트리를 쿼리합니다.
예시
다각형 내
다음 예시에서는 GeoJSONPolygon내에 완전히 존재하는 loc 데이터를 모두 선택합니다. 다각형의 면적이 단일 반구의 면적보다 작습니다.
db.places.find(    {      loc: {        $geoWithin: {           $geometry: {              type : "Polygon" ,              coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]           }        }      }    } ) 
단일 반구보다 큰 면적을 가진 단일 고리 다각형의 경우 "큰" 다각형 내부를 참조하세요.
"큰" 다각형 내
면적이 단일 반구보다 큰 단일 링 GeoJSON 다각형을 사용하여 쿼리하려면 $geometry 표현식에 사용자 지정 MongoDB 좌표 참조 시스템을 지정해야 합니다. 예시:
db.places.find(    {      loc: {        $geoWithin: {           $geometry: {              type : "Polygon" ,              coordinates: [                [                  [ -100, 60 ], [ -100, 0 ], [ -100, -60 ], [ 100, -60 ], [ 100, 60 ], [ -100, 60 ]                ]              ],              crs: {                 type: "name",                 properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" }              }           }        }      }    } )