2012-01-17 116 views
2

我已经成立了一个班作为
http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/geospatial-queries.html什么是Doctrine ODM地理空间查询的正确查询?

我的2D指数描述中正确设置蒙戈

> 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_" } 

当我运行在蒙戈外壳下面的命令,我得到了很多结果,返回。

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(); 

学说上的网站的文件似乎是有点过。为了纪录,我已经创建了一个展示我的课程的要点(trucated)。 https://gist.github.com/1627491

这是debug()

$this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near('50,60')->debug(); 

    Array 
    (
     [type] => 10 
     [mapReduce] => Array 
      (
       [map] => 
       [reduce] => 
       [options] => Array 
        (
        ) 

      ) 

     [near] => Array 
      (
       [coordinates] => 50,60 
      ) 

    ) 

回答

3

输出您是否尝试过摆脱你的extends Base为你的模型?

您也可以尝试这样的:

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

我没有试图消除延伸基地,但我很好奇,为什么会影响查询的结果。 Base是我为了处理所有模型通用的一些简单操作而创建的Abstract类。我能够对ODM运行其他查询并取得巨大成功。 – 2012-01-26 18:25:57

+0

你已经赢得了自己的+50分,我很乐意给予。您提供的解决方案非常完美。休息一天休息。 – 2012-01-26 18:35:19

+0

要更清楚,查询工作得很好,但我没有摆脱或'扩展基地' – 2012-01-26 18:45:47