我正在使用DoctrineMongoDBBundle和Symfony2,我遇到了地理坐标的问题。这工作正常,但当经度是这样的:0.635467代码不起作用。我有更多的地理坐标,只有在从0开始时才会失败。距离字段为NULL。
这是我的代码:
$locations = $dm->createQueryBuilder('MyBundle:Location')
->field('id')->in($arrayIds)
->field('geocoordinates')
->geoNear($geocodes['lat'],$geocodes['lon'])
->getQuery()->execute()->toArray();
我正在关注此链接:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/geospatial-queries.html,但使用geonear方法。
答案 0 :(得分:2)
geoNear()
查询构建器方法不适用于字段。 near()
是遵循field()
焦点的构建器方法。您可以在doctrine / mongodb项目中的Builder.php中查看这两种构建器方法的作用。请注意geoNear()
更改了查询类型(类似于update()
所做的)。然后在Query.php中检查查询类型(按照switch语句)并确定我们如何在集合上发出查询。有些是实际的查询操作,但map / reduce和geoNear等命令都是命令。
查看以下代码是否有效:
$dm->createQueryBuilder('MyBundle:Location')
->geoNear($geocodes['lat'],$geocodes['lon'])
->field('id')->in($arrayIds)
->getQuery()->execute()->toArray();
如果没有,请调试Query.php传递给Collection::near()
方法的值。或者,您可以使用Query::getQuery()
方法调试构建器生成的整个查询数组。