2012-01-17 118 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