基于MongoDB-ODM的近地法中的错误距离

基于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

我正在使用DoctorineMongoDBbundle和Symfony2,我对地理坐标有问题。这很好,但当经度为0.635467时,代码不起作用。我有更多的地理坐标,只有当它以0开始时才失败。距离字段为空

这是我的代码:

$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”开头的纬度/经度