이 기사에서는 MongoDB에서 지리 공간 색인 및 쿼리를 설명합니다. Geojson을 사용한 효율적인 위치 기반 검색을 위해 2dsphere 지수를 사용한 세부 정보. 이 기사는 $ 니어, $ geowithin과 같은 지리 공간 사업자 및 성과 이점을 다룹니다.
MongoDB는 2dsphere 지수를 통해 지리 공간 데이터를 강력하게 지원합니다. 이 색인을 사용하면 Geojson 객체로 저장된 위치 데이터를 효율적으로 쿼리 할 수 있습니다. 이를 활용하려면 먼저 데이터를 올바르게 구성해야합니다. 일반적으로 위치 데이터는 문서 내에 GeoJSON
유형 필드로 저장됩니다. Geojson은 Point
, Polygon
, LineString
등과 같은 다양한 형상을 지원합니다.
예를 들어, 식당을 나타내는 문서는 다음과 같습니다.
<code class="json">{ "name": "Restaurant A", "location": { "type": "Point", "coordinates": [ -73.9728, 40.7644 ] // Longitude, Latitude } }</code>
다음으로 location
필드에서 2dsphere 인덱스를 만듭니다.
<code class="javascript">db.restaurants.createIndex( { location : "2dsphere" } )</code>
인덱스를 만든 후 지리 공간 연산자를 사용하여 쿼리를 수행 할 수 있습니다. 일반 운영자에는 $near
, $nearSphere
, $geoWithin
및 $geoIntersects
포함됩니다.
$near
및 $nearSphere
:이 연산자는 주어진 지점의 지정된 반경 내에서 문서를 찾습니다. $near
작은 거리에 적합한 평면 지오메트리를 사용하는 반면, $nearSphere
구형 지오메트리를 사용하여 더 먼 거리에 더 정확합니다.$geoWithin
:이 연산자는 지오메트리가 지정된 지오메트리 (예 : 원, 다각형) 내에있는 문서를 찾습니다.$geoIntersects
:이 연산자는 지오메트리가 지정된 지오메트리와 교차하는 문서를 찾습니다.다음은 쿼리의 예입니다.
10km 이내의 식당을 찾으십시오.
<code class="javascript">db.restaurants.find( { location: { $nearSphere: { $geometry: { type: "Point", coordinates: [ -73.9728, 40.7644 ] }, $maxDistance: 10000 // meters } } } )</code>
다각형 안에서 식당을 찾으십시오.
<code class="javascript">db.restaurants.find({ location: { $geoWithin: { $geometry: { type: "Polygon", coordinates: [ [ [ -74, 41 ], [ -73, 41 ], [ -73, 40 ], [ -74, 40 ], [ -74, 41 ] ] ] } } } })</code>
지리 공간 지수는 위치 기반 쿼리의 성능을 크게 향상시킵니다. 인덱스가 없으면 MongoDB는 컬렉션 스캔을 수행하여 컬렉션의 모든 문서를 검사하여 일치하는 위치를 찾습니다. 이것은 특히 큰 데이터 세트의 경우 매우 비효율적입니다.
2dsphere 인덱스를 사용하여 MongoDB는 R- 트리와 같은 공간 데이터 구조를 효율적으로 활용하여 검색 공간을 빠르게 좁힐 수 있습니다. 이를 통해 특히 근접성 검색과 관련된 쿼리 ( $near
, $nearSphere
)의 경우 결과를 훨씬 더 빨리 반환 할 수 있습니다. 성능 게인은 수백만 개의 위치 포인트를 포함하는 대형 데이터 세트를 처리 할 때 가장 눈에 띄게됩니다. 쿼리 실행 시간은 크게 줄어들어 응용 프로그램의 응답 성을 향상시킵니다. 차이는 무례한 검색에 비해 훨씬 빠른 순서 일 수 있습니다.
예, MongoDB는 다각형 내에서 포인트 찾기를 포함하여 복잡한 지리 공간 쿼리를 지원합니다. 이전 섹션에서 볼 수 있듯이 $geoWithin
연산자는 Polygon
Geojson 객체와 함께 위치가 지정된 다각형 내에있는 문서를 효율적으로 찾을 수 있습니다. 이는 특정 도시 경계 내에서 모든 식당을 찾거나 맞춤형 지역 내에서 지점을 결정하는 것과 같은 시나리오에 유용합니다. $geoIntersects
연산자를 사용하여 선이나 다른 다각형과 같은 더 복잡한 지오메트리와 교차하는 문서를 찾을 수 있습니다. 이 유연성을 사용하면 애플리케이션에 정교한 위치 기반 기능을 구축 할 수 있습니다.
몇 가지 일반적인 함정은 MongoDB에서 지리 공간 특징의 효과적인 구현을 방해 할 수 있습니다.
이러한 잠재적 인 문제를 신중하게 해결함으로써 MongoDB 응용 프로그램에서 효율적이고 정확한 지리 공간 기능을 보장 할 수 있습니다.
위 내용은 위치 기반 애플리케이션에 MongoDB에서 지리 공간 인덱싱 및 쿼리를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!