sql >> Databáze >  >> NoSQL >> MongoDB

Špatná vzdálenost v geonear metodě s Doctrine MongoDB ODM

geoNear() metoda tvůrce dotazů není určena k použití v poli. near() je metoda stavitele, která bude následovat po field() zaměřit se. Co dělají obě tyto metody builderu, můžete vidět v Builder.php v rámci projektu doctrine/mongodb. Všimněte si, že geoNear() změní typ dotazu (podobně jako update() dělá). Typ dotazu je poté zkontrolován v Query. php (podle příkazu switch) a určuje, jak zadáme dotaz na kolekci. Některé jsou skutečné operace dotazů, ale věci jako map/reduce a geoNear jsou příkazy.

Podívejte se, zda funguje následující kód:

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

Pokud ne, odlaďte prosím hodnoty, které Query.php předává do Collection::near() metoda. Případně můžete odladit celé pole dotazů vygenerované tvůrcem pomocí Query::getQuery() metoda.




  1. zavolejte kolekci mongo pomocí proměnné

  2. Jak získat všechny klíče z Redis pomocí šablony redis

  3. MongoDB Agregation:Dvojité vyhledávání a odpověď vyhledávání sloučení na příslušný objekt

  4. Ochrana vašich dat pomocí ClusterControl