基于MongoDB-ODM的近地法中的错误距离
我正在使用DoctorineMongoDBbundle和Symfony2,我对地理坐标有问题。这很好,但当经度为0.635467时,代码不起作用。我有更多的地理坐标,只有当它以0开始时才失败。距离字段为空 这是我的代码:基于MongoDB-ODM的近地法中的错误距离,mongodb,symfony,doctrine-odm,Mongodb,Symfony,Doctrine Odm,我正在使用DoctorineMongoDBbundle和Symfony2,我对地理坐标有问题。这很好,但当经度为0.635467时,代码不起作用。我有更多的地理坐标,只有当它以0开始时才失败。距离字段为空 这是我的代码: $locations = $dm->createQueryBuilder('MyBundle:Location') ->field('id')->in($arrayIds) -&g
$locations = $dm->createQueryBuilder('MyBundle:Location')
->field('id')->in($arrayIds)
->field('geocoordinates')
->geoNear($geocodes['lat'],$geocodes['lon'])
->getQuery()->execute()->toArray();
我遵循这个链接:但是使用geonear方法。不打算在字段上使用geonear()
querybuilder方法near()
是遵循字段()
焦点的生成器方法。您可以在doctrine/mongodb项目中看到这两种构建器方法的作用。请注意,geoNear()
更改查询类型(类似于update()
所做的操作)。然后检入查询类型(遵循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()
方法调试生成器生成的整个查询数组。地理空间搜索需要经度、纬度的顺序。这就是您存储文档的方式吗?是的,问题只在于以“0”开头的纬度/经度