정의
geoWithingeoWithin연산자는 주어진 지오메트리 내의 지리적 점에 대한 쿼리를 지원합니다. 인덱스 정의에서indexShapes값이true인 경우에도 점만 반환됩니다.다음 항목 내의 점을 쿼리할 수 있습니다.
원
경계 박스
다각형
검색할 좌표를 지정할 때는 경도를 먼저 지정한 다음 위도를 지정해야 합니다. 경도 값 범위는
-180~180사이이며 둘 다 포함합니다. 위도 값 범위는-90~90이며 둘 다 포함합니다. 좌표 값은 정수 또는 이중 값일 수 있습니다.참고
MongoDB Search는 다음을 지원 하지 않습니다.
기본값이 좌표 기준계(CRS)
평면형 XY 좌표계(2차원)
좌표 쌍 점 표기법(즉,
pointFieldName: [12, 34])
구문
geoWithin 의 구문은 다음과 같습니다:
{ "$search": { "index": <index name>, // optional, defaults to "default" "geoWithin": { "path": "<field-to-search>", "box | circle | geometry": <object>, "score": <score-options> } } }
옵션
geoWithin 는 다음 용어를 사용하여 쿼리를 구성합니다:
필드 | 유형 | 설명 | 필요성 |
|---|---|---|---|
| 객체 | 검색할 상자의 왼쪽 아래와 오른쪽 위 GeoJSON 포인트를 지정하는 객체입니다. 객체는 다음 필드를 사용합니다. GeoJSON 객체 내에서 GeoJSON 데이터를 지정하는 방법을 알아보려면 GeoJSON 객체를 참조하세요.
| 조건부 |
| 객체 | Atlas Search의 중심점과 반경을 미터 단위로 지정하는 객체입니다. 객체에는 다음과 같은 GeoJSON 필드가 포함되어 있습니다.
GeoJSON 객체 내에서 GeoJSON 데이터를 지정하는 방법을 알아보려면 GeoJSON 객체를 참조하세요.
| 조건부 |
| GeoJSON 객체 | Atlas Search 내에서 다중 GeoJSON 다각형 또는 다각형 을 지정하는 객체입니다. 다각형은 마지막 위치가 첫 번째 위치와 동일한 닫힌 루프로 지정되어야 합니다. 지리 공간적 결과를 계산할 때 MongoDB Search geoShape 및 geoWithin 연산자와 MongoDB $geoIntersects 연산자 서로 다른 도형을 사용합니다. 이 차이는 MongoDB Search와 MongoDB 다각형 가장자리를 그리는 방법에서 확인할 수 있습니다. MongoDB Search는 좌표 참조 시스템의 두 점 사이의 가장 짧은 선인 데카르트 거리 를 기준으로 다각형을 그립니다. MongoDB 측지 유형용 타사 라이브러리를 기반으로 하는 2dsphere 인덱스를 기반으로 하는 측지 모드 또는 2d 인덱스의 플랫 모드 를 사용하여 다각형을 그립니다. 자세한 학습 은 GeoJSON 객체를 참조하세요. MongoDB Search와 MongoDB 다각형과 관련된 지리 공간적 쿼리에 대해 서로 다른 결과를 반환할 수 있습니다. GeoJSON 객체 내에서 GeoJSON 데이터를 지정하는 방법을 알아보려면 GeoJSON 객체를 참조하세요.
| 조건부 |
| 문자열 또는 문자열 배열 | 검색할 인덱싱된 geo 유형 필드. | 네 |
| 객체 | 일치하는 검색 결과에 할당할 점수입니다. 기본적으로 결과의 점수 는
쿼리에서 | no |
예시
다음 예제에서는 sample_airbnb 데이터베이스 의 listingsAndReviews 컬렉션 사용합니다. 클러스터에 샘플 데이터 세트 가 있는 경우 지리적 유형에 대한 사용자 지정 MongoDB Search 인덱스를 만들고 클러스터에서 예시 쿼리를 실행할 수 있습니다.
listingsAndReviews collection의 address.location 필드를 인덱싱하려면 다음 샘플 인덱스 정의를 사용합니다.
1 { 2 "mappings": { 3 "fields": { 4 "address": { 5 "fields": { 6 "location": { 7 "type": "geo" 8 } 9 }, 10 "type": "document" 11 }, 12 "property_type": { 13 "type": "token" 14 } 15 } 16 } 17 }
box 예시
다음 쿼리는 geoWithin 연산자와 box 필드를 사용하여 오스트레일리아의 경계 상자 내 속성을 검색합니다.
쿼리에는 다음이 포함됩니다.
참고
MongoDB Search 쿼리 에 default 이라는 인덱스를 지정할 필요가 없습니다. 인덱스 에 다른 이름이 있는 경우 index 필드 지정해야 합니다.
기본 예시
메타데이터 예시
circle 예시
다음 쿼리는 geoWithin 연산자와 circle 필드를 사용하여 캐나다의 지정된 좌표에서 반경 1마일 이내에 있는 속성을 검색합니다.
쿼리에는 다음이 포함됩니다.
$limit단계는 출력을3결과로만 제한합니다.$project단계를 사용하여name및 를 제외한 모든 필드를 제외하고addressCompass 예제의 경우 필수 단계를 참조합니다.
참고
MongoDB Search 쿼리 에 default 이라는 인덱스를 지정할 필요가 없습니다. 인덱스 에 다른 이름이 있는 경우 index 필드 지정해야 합니다.
geometry 예시
다음 예시에서는 geometry 필드와 함께 geoWithin 연산자를 사용하여 하와이의 속성을 검색합니다. type 필드는 해당 영역이 GeoJSON 다각형인지 다중 다각형인지를 지정합니다.
참고
MongoDB Search 쿼리 에 default 이라는 인덱스를 지정할 필요가 없습니다. 인덱스 에 다른 이름이 있는 경우 index 필드 지정해야 합니다.