Доктрина MongoDB geoNear - PullRequest
       17

Доктрина MongoDB geoNear

1 голос
/ 08 августа 2011

Я пытаюсь понять, как выполнить команду geoNear без переписывания проекта doctrine-mongodb.Я просмотрел файлы Expr.php и Builder.php и не нашел ссылок на команду geoNear. Как я могу получить эту функцию в моем ODM Doctrine MongoDB?

спасибо

Ответы [ 2 ]

1 голос
/ 30 апреля 2013

Последняя версия DoctrineODM имеет метод geoNear: См. Код

Однако имейте в виду, что geoNear действительно взломан для Foursquare командой MongoDB,Он возвращает только первые 100 результатов, упорядоченных по расстоянию (и вы не можете разбивать на страницы)

Вместо этого используйте $ возле : $ возле Документа для Монго 2.2

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

Предупреждение: $ возле изменено в Mongo 2.4, теперь он возвращает также только первые 100 элементов: $ возле документа для Mongo 2.4


Если вам не нужно сортировать по расстоянию, используйте $geoWithin (или $within в Mongo 2.2), тогда вы можете сортировать по другим полям и разбивать на страницы:

$query->field('coordinates')
       ->equals(array('$within' => array('$center' => array(array($lat, $lon)
                                        , $maxDistanceKm / 111) ) ));
0 голосов
/ 20 сентября 2011

Сколько лет вашей версии библиотеки?

Существует реализация команды geoNear, доступная в Магистраль Doctrine MongoDb mappers , $qb->near(array($x, $y)).Но я проверил это очень быстро, я не могу сказать вам, насколько хорошо он работает при широком использовании.

...