MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Distância errada no método geonear com Doctrine MongoDB ODM


O geoNear() O método do construtor de consultas não se destina a ser usado em um campo. near() é o método construtor que seguiria um field() foco. Você pode ver o que esses dois métodos de construtor fazem em Construtor.php dentro do projeto doutrina/mongodb. Observe que geoNear() altera o tipo de consulta (semelhante ao que update() faz). O tipo de consulta é então verificado em Query. php (siga a instrução switch) e determina como emitimos a consulta na coleção. Algumas são operações de consulta reais, mas coisas como map/reduce e geoNear são comandos.

Veja se o seguinte código funciona:
$dm->createQueryBuilder('MyBundle:Location')
    ->geoNear($geocodes['lat'],$geocodes['lon'])
    ->field('id')->in($arrayIds)
    ->getQuery()->execute()->toArray();

Caso contrário, depure os valores que Query.php passa para a Collection::near() método. Como alternativa, você pode depurar todo o array de consulta gerado pelo construtor usando o Query::getQuery() método.