MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mauvaise distance dans la méthode geonear avec Doctrine MongoDB ODM

Le geoNear() La méthode du générateur de requêtes n'est pas destinée à être utilisée sur un champ. near() est la méthode de construction qui suivrait un field() se concentrer. Vous pouvez voir ce que font ces deux méthodes de construction dans Builder.php au sein du projet doctrine/mongodb. Notez que geoNear() change le type de requête (similaire à ce que update() Est-ce que). Le type de requête est ensuite vérifié dans Query. php (suivez l'instruction switch) et détermine comment nous émettons la requête sur la collection. Certaines sont de véritables opérations de requête, mais des choses comme map/reduce et geoNear sont des commandes.

Vérifiez si le code suivant fonctionne :

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

Sinon, veuillez déboguer les valeurs que Query.php transmet à la Collection::near() méthode. Alternativement, vous pouvez déboguer tout le tableau de requête généré par le générateur en utilisant le Query::getQuery() méthode.