MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Falsche Entfernung in der Geonear-Methode mit Doctrine MongoDB ODM

Das geoNear() Die Abfrageerstellungsmethode ist nicht für die Verwendung in einem Feld vorgesehen. near() ist die Builder-Methode, die einem field() folgen würde Fokus. Sie können sehen, was diese beiden Builder-Methoden in Builder.php innerhalb des Doktrin/Mongodb-Projekts. Beachten Sie, dass geoNear() ändert den Abfragetyp (ähnlich wie update() tut). Der Abfragetyp wird dann in Query überprüft. php (folgen Sie der switch-Anweisung) und bestimmt, wie wir die Abfrage für die Sammlung ausgeben. Einige sind tatsächliche Abfrageoperationen, aber Dinge wie map/reduce und geoNear sind Befehle.

Prüfen Sie, ob der folgende Code funktioniert:

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

Wenn nicht, debuggen Sie bitte die Werte, die Query.php an Collection::near() übergibt Methode. Alternativ können Sie das gesamte vom Builder generierte Abfragearray debuggen, indem Sie Query::getQuery() verwenden Methode.