Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

$geoIntersects

이 페이지의 내용

  • 정의
  • 행동
  • 예시
$geoIntersects

지리 공간적 데이터가 지정된 GeoJSON 객체 와 교차하는 문서를 선택합니다. 즉 여기서 데이터와 지정된 객체 의 교차 부분은 비어 있지 않습니다.

$geoIntersects 연산자는 $geometry 연산자를 사용하여 GeoJSON 객체를 지정합니다. 기본 좌표 참조 시스템(CRS)을 사용하여 GeoJSON 다각형 또는 다중 다각형을 지정하려면 다음 구문을 사용합니다.

{
<location field>: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>" ,
coordinates: [ <coordinates> ]
}
}
}
}

단일 반구보다 면적이 큰 GeoJSON 도형을 지정하는 $geoIntersects 쿼리의 경우, 기본 CRS를 사용하면 보완적인 도형에 대한 쿼리가 생성됩니다.

사용자 지정 MongoDB CRS를 사용하여 단일 고리 GeoJSON 다각형을 지정하려면 $geometry 표현식에 사용자 지정 MongoDB CRS를 지정하는 다음 프로토타입을 사용하세요.

{
<location field>: {
$geoIntersects: {
$geometry: {
type: "Polygon" ,
coordinates: [ <coordinates> ],
crs: {
type: "name",
properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" }
}
}
}
}
}

사용자 지정 MongoDB CRS는 시계 반대 방향의 와인딩 순서를 사용하며, $geoIntersects가 단일 반구보다 크거나 같은 면적을 갖는 단일 고리 GeoJSON 다각형이 있는 쿼리를 지원할 수 있도록 합니다. 지정된 다각형이 단일 반구보다 작은 경우 MongoDB CRS를 사용한 $geoIntersects의 동작은 기본 CRS를 사용한 경우와 동일합니다. '큰' 다각형도 참조하세요.

중요

위도 및 경도 좌표를 지정하는 경우 경도를 먼저 나열한 다음 위도를 나열합니다.

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

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

$geoIntersects는 구형 도형을 사용합니다. $geoIntersects에는 지리 공간적 인덱스가 필요하지 않습니다. 그러나 지리 공간적 인덱스는 쿼리 성능을 향상합니다. 2dsphere 지리 공간적 인덱스만 $geoIntersects를 지원합니다.

$geoIntersects 특정 다각형이 자체 모서리, 자체 정점 또는 꼭지점이나 가장자리를 공유하지만 내부 공간은 없는 다른 다각형과 교차하는 것으로 간주한다는 보장은 없습니다.

$geoIntersects의 경우 단일 반구보다 큰 면적을 가진 단일 고리 다각형을 지정할 때 $geometry 표현식에 사용자 지정 MongoDB 좌표 참조 시스템을 포함하세요. 그렇지 않은 경우, $geoIntersects는 보완 지오메트리를 쿼리합니다. 반구보다 큰 면적을 가진 다른 모든 GeoJSON 다각형의 경우 $geoIntersects는 보완 지오메트리를 쿼리합니다.

다음 예시에서는 $geoIntersects를 사용하여 coordinates 배열로 정의된 Polygon과 교차하는 loc 데이터를 모두 선택합니다. 다각형의 면적이 단일 반구의 면적보다 작습니다.

db.places.find(
{
loc: {
$geoIntersects: {
$geometry: {
type: "Polygon" ,
coordinates: [
[ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ]
]
}
}
}
}
)

단일 반구보다 큰 면적을 가진 단일 고리 다각형의 경우 큰 다각형과 교차하기를 참조하세요.

면적이 단일 반구보다 큰 단일 링 GeoJSON 다각형을 사용하여 쿼리하려면 $geometry 표현식에 사용자 지정 MongoDB 좌표 참조 시스템을 지정해야 합니다. 예시:

db.places.find(
{
loc: {
$geoIntersects: {
$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" }
}
}
}
}
}
)

돌아가기

지리공간 쿼리

이 페이지의 내용