我正在尝试如何在不重写doctrine mongodb项目的情况下执行geoNear命令。我已经查看了Expr.php和Builder.php文件,但我没有找到geoNear命令的引用,我如何才能在我的Doctrine MongoDB ODM中获得此功能?
谢谢
发布于 2013-04-30 20:40:34
DoctrineODM的最新版本有geoNear方法:See the code
然而,请记住,geoNear确实是MongoDB团队为Foursquare制作的一个黑客工具。它只返回按距离排序的前100个结果(并且不能分页)
改用$near:$near Doc for Mongo 2.2
$query->field('coordinates')
->equals(array('$near' => array($lat, $lon)
, '$maxDistance' => $maxDistanceKm / 111));警告:$near在Mongo2.4中发生了变化,现在它也只返回前100项:$near Doc for Mongo 2.4
如果你不需要按距离排序,可以使用$geoWithin (或Mongo2.2中的$within ),然后你可以按其他字段排序并分页:
$query->field('coordinates')
->equals(array('$within' => array('$center' => array(array($lat, $lon)
, $maxDistanceKm / 111) ) ));发布于 2011-09-21 00:56:40
你的库版本有多老?
在Doctrine MongoDb mappers's trunk、$qb->near(array($x, $y))上提供了geoNear命令的实现。但我很快就测试了它,我不能告诉你它在广泛的使用中有多好。
https://stackoverflow.com/questions/6986093
复制相似问题