2012-01-20 40 views
0

工作,我有一個蒙戈集合稱爲城市以下JSON地理位置查詢不蒙戈從PHP

{ 
    "city_name": "Amesbury", 
    "lat": "42.8583925", 
    "lng": "-70.9300376", 
    "geo_coords": [-70.9300376,42.8583925] 
} 

正如你可以看到這個集合了阿姆斯伯利的地理位置。現在我正在嘗試使用PHP獲取這個,我使用下面的代碼。

$collection = $this->mongodb->city; 
     $collection->ensureIndex(array('geo_coords' => '2d')); 

     $radiusMiles = 500000; //get all results within 5 miles 
     $radiusOfEarth = 3956; //avg radius of earth in miles 

     $cursor = $collection->find(
      array('geo_coords' => 
       array('$within' => 
        array('$centerSphere' => 
         array(
          array($lng, $lat), $radiusMiles/$radiusOfEarth 
         ) 
        ) 
       ) 
      ) 
     ); 

要將此代碼我通過經度和波士頓的緯度消息的說法,我希望查詢獲取阿姆斯伯利作爲結果因爲二者都是周邊城市,絕對是500000英里了。

但我的查詢沒有返回任何結果。問題是什麼?

+0

你從蒙戈的JavaScript殼嘗試過嗎? – RameshVel

回答

0

地理座標格式不正確。它應該是,理想情況下,兩個數字的數組:

"geo": [-70.9300376, 42.8583925] 

請閱讀完整的文檔:http://www.mongodb.org/display/DOCS/Geospatial+Indexing

+0

試圖改變座標到正確的格式,仍然沒有運氣,任何其他的想法? – user1160553

+0

只需閱讀文檔http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-SphericalExample,您的範圍看起來有點過大。 – greut