Mongodb ODM地理空间查询的正确查询是什么?

Mongodb ODM地理空间查询的正确查询是什么?,mongodb,doctrine,geospatial,Mongodb,Doctrine,Geospatial,我已经按照 我的2d索引在mongo中设置正确 > db.system.indexes.find() { "v" : 1, "key" : { "_id" : 1 }, "ns" : "pfcd_dev.media", "name" : "_id_" } { "v" : 1, "key" : { "_id" : 1 }, "ns" : "pfcd_dev.events", "name" : "_id_"

我已经按照

我的2d索引在mongo中设置正确

> db.system.indexes.find()                                          
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "pfcd_dev.media", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "pfcd_dev.events", "name" : "_id_" }
{ "v" : 1, "key" : { "coordinates" : "2d" }, "ns" : "pfcd_dev.events", "name" : "coordinates_" }
在mongo shell上运行以下命令时,返回了大量结果

db.runCommand( { geoNear : "events" , near : [50,60], num : 10 } )
我已经为
near()
尝试了以下所有变体,所有结果都返回零

$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near('[50,60]')->getQuery()->execute();
$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near('50,60')->getQuery()->execute();
$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near(50,60)->getQuery()->execute();
$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near(array(50,60))->getQuery()->execute();
条令网站上的文件似乎有点不对劲。为了记录在案,我已经创建了一个显示我的类的要点

这是
debug()


您是否尝试过为您的机型取消
extensedbase

您也可以尝试以下方法:

$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates.latitude')->near(50)->field('coordinates.longitude')->near(60)->getQuery()->execute();

我没有尝试删除extends基,但是我很好奇为什么这会影响查询的结果。Base是一个抽象类,我创建它只是为了处理所有模型通用的一些简单操作。我能够对ODM运行其他查询,取得了巨大的成功。您已经为自己赢得了+50的代表积分,我很高兴为您提供这些积分。您提供的解决方案非常有效。休息一天。更清楚地说,查询很有效,但我没有摆脱或
extensedbase
谢谢。我在想,如果基类有其他属性,那么驱动程序可能不知道哪些属性与2d索引相关。然后我找到了一种方法来指定要使用哪些属性,这显然是正确的方法。
$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates.latitude')->near(50)->field('coordinates.longitude')->near(60)->getQuery()->execute();