MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Distanza errata nel metodo geonear con Doctrine MongoDB ODM

Il geoNear() il metodo del generatore di query non deve essere utilizzato su un campo. near() è il metodo di creazione che seguirebbe un field() messa a fuoco. Puoi vedere cosa fanno entrambi questi metodi di creazione in Builder.php all'interno del progetto dottrina/mongodb. Nota che geoNear() cambia il tipo di query (simile a cosa update() fa). Il tipo di query viene quindi verificato in Query. php (seguire l'istruzione switch) e determina come emettiamo la query sulla raccolta. Alcuni sono effettive operazioni di query, ma cose come map/reduce e geoNear sono comandi.

Verifica se il codice seguente funziona:

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

In caso contrario, eseguire il debug dei valori che Query.php passa alla Collection::near() metodo. In alternativa, puoi eseguire il debug dell'intero array di query generato dal builder utilizzando Query::getQuery() metodo.