2012-08-02 2 views
2

결과 영역에서 MongoDB의 지리 정보 검색을 두 원의 차이로 수행 할 수 있습니까? 반경 x의 원 A와 y> x 인 반경 y의 원 B가 있다고 가정 해 봅시다. B - A 안에있는 모든 포인트를 찾아야합니다. MongoDB에서 가능합니까? MongoDB는 다각형 검색을 지원하지만 더 나은 방법이있을 수 있습니다. mongoid를 사용하는 레일 애플리케이션에서 Mongo를 사용하고 있음을 명심하십시오.MongoDB에서 두 원의 차이 내에서 지리 정보 검색을 수행하는 방법 =

답변

4

예, 가능합니다. $within 연산자를 사용하십시오.

http://www.mongodb.org/display/DOCS/Geospatial+Indexing/#GeospatialIndexing-Querying

경계 쿼리 형태 내에서 항목을 찾을 대신 근처 $ 사용할 수 있습니다 $ 내

. 결과는 거리별로 정렬되지 않으므로이 정렬이 필요하지 않은 경우 쿼리가 빨라질 수 있습니다. $ box (직사각형), $ center (원) 및 $ polygon (오목 및 볼록 다각형) 유형의 모양이 지원됩니다. 모든 경계 쿼리는 절대적으로 신뢰할 수없는 부동 소수점 부정확성으로 인해 경계의 일부로 형상의 경계를 암시 적으로 포함합니다.

사각형 내의 모든 포인트를 조회하려면 아래 왼쪽과 오른쪽 위 모서리를 지정해야합니다

센터 = [50, 50 : 을 원은 중심점과 반경 지정 ] 반경 = 10 db.places.find ({ "LOC는": { "내 $": { "$ 센터는"[센터는 반경]}}})

한 가지 방법이 될 것입니다 당신이 두 원 안의 점을 찾을 수 있고 그 다음 세트의 교차점을 수행 할 수 있습니다. 동그라미가 동심원이거나 동심원이 아니지만 일부 겹치는 영역이있는 경우 두 경우에 모두 사용할 수 있습니다.

+0

그게 가능한 유일한 접근 방법 같습니다. $ annularRing과 같은 연산자는 $ 안에서 사용할 수 없습니다. –

+0

감사합니다. 작동합니다. – rusllonrails

관련 문제