2011-08-08 3 views
1

doctrine-mongodb 프로젝트를 다시 작성하지 않고 geoNear 명령을 수행하는 방법을 알아 보려고합니다. Expr.php와 Builder.php 파일을 살펴 보았습니다. geoNear 명령어에 대한 참조를 찾지 못했습니다. 어떻게하면 Doctrine MongoDB ODM에서이 기능을 사용할 수 있습니까?Doctrine MongoDB geoNear

감사합니다.

답변

0

라이브러리 버전은 몇 개입니까?

Doctrine MongoDb mappers's trunk, $qb->near(array($x, $y))에 사용할 수있는 geoNear 명령의 구현이 있습니다. 하지만 매우 빠르게 테스트 해본 결과 광범위한 사용법에서 얼마나 효과가 있는지 말할 수 없습니다.

1

DoctrineODM의 lastes 버전은 geoNear 방법이 있습니다 See the code

그러나, geoNear 진정으로 MongoDB를 팀 정사각형을 위해 만든 해킹임을 명심하십시오. $near Doc for Mongo 2.2

$query->field('coordinates') 
     ->equals(array('$near' => array($lat, $lon) 
        , '$maxDistance' => $maxDistanceKm/111)); 

경고 : $ 근처이 몽고 2.4에서 변경

사용 $ 대신 근처 거리의 지시 처음 100 개 결과를 반환 (당신은 페이지를 매기는 없습니다) 이제는 처음 100 개 항목 만 반환합니다. $near Doc for Mongo 2.4


$query->field('coordinates') 
     ->equals(array('$within' => array('$center' => array(array($lat, $lon) 
             , $maxDistanceKm/111)))); 
+0

그래서 당신은'$의 near'와 (제한) 페이지를 매기는 할 수 없습니다 당신이 거리를 기준으로 정렬 할 필요가없는 경우, 당신은 다른 필드를 기준으로 정렬 할 수 있으며 페이지를 매기 (몽고 2.2 또는 $within) $geoWithin를 사용할 수 있습니까? –

+1

마지막으로 확인한 시간은 : 아니요. 새로운 Mongo에서는 집합 프레임 워크를 사용하지만 많은 작업이 메모리에서 이루어 지므로 16Mb의 결과로 제한됩니다 – Madarco