La version RECENTS DoctrineODM a la méthode geoNear
: See the code
Cependant, gardez à l'esprit que geoNear
est vraiment une entaille faite pour Foursquare par l'équipe MongoDB. Il ne retourne que les 100 premiers résultats ordonnés par la distance (et vous ne pouvez pas paginer)
utilisation $ près de la place: $near Doc for Mongo 2.2
$query->field('coordinates')
->equals(array('$near' => array($lat, $lon)
, '$maxDistance' => $maxDistanceKm/111));
Avertissement: $ près changé en 2.4 Mongo , maintenant il renvoie seulement les 100 premiers éléments aussi: $near Doc for Mongo 2.4
Si vous n'avez pas besoin de trier par la distance, utilisez $geoWithin
(ou $within
à Mongo 2.2), vous pouvez trier par d'autres champs et paginer:
$query->field('coordinates')
->equals(array('$within' => array('$center' => array(array($lat, $lon)
, $maxDistanceKm/111))));
vous ne pouvez pas paginer (limite) avec 'near' de $? –
La dernière fois que j'ai vérifié: non. Avec Mongo plus récent, utilisez le framework agrégé, mais considérez que beaucoup d'opérations sont effectuées en mémoire, et donc limité à 16Mb de résultats – Madarco