在geonear方法错距离与学说MongoDB的ODM(Wrong distance in geon

2019-10-29 13:52发布

我使用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方法。

Answer 1:

所述geoNear()查询生成器方法不旨在被对字段使用。 near()是将遵循建设者法field()的焦点。 你可以看到这两种生成器方法在做Builder.php学说/ MongoDB的项目内。 需要注意的是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()方法。



文章来源: Wrong distance in geonear method with Doctrine MongoDB ODM