sql >> Base de Datos >  >> NoSQL >> MongoDB

Distancia incorrecta en método geonear con Doctrine MongoDB ODM

El geoNear() El método de creación de consultas no está diseñado para usarse en un campo. near() es el método constructor que seguiría a un field() enfoque. Puede ver lo que hacen estos dos métodos de construcción en Constructor.php dentro del proyecto doctrina/mongodb. Tenga en cuenta que geoNear() cambia el tipo de consulta (similar a lo que update() lo hace). Luego, el tipo de consulta se verifica en Query. php (siga la declaración de cambio) y determina cómo emitimos la consulta en la colección. Algunas son operaciones de consulta reales, pero cosas como map/reduce y geoNear son comandos.

Vea si el siguiente código funciona:

$dm->createQueryBuilder('MyBundle:Location')
    ->geoNear($geocodes['lat'],$geocodes['lon'])
    ->field('id')->in($arrayIds)
    ->getQuery()->execute()->toArray();

De lo contrario, depure los valores que Query.php pasa a Collection::near() método. Alternativamente, puede depurar toda la matriz de consulta generada por el constructor usando Query::getQuery() método.