我有一个名为city的mongo集合,其中包含以下json
{
"city_name": "Amesbury",
"lat": "42.8583925",
"lng": "-70.9300376",
"geo_coords": [-70.9300376,42.8583925]
}
正如您所看到的,此系列具有amesbury的地理位置。现在我尝试使用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
)
)
)
)
);
对于这段代码,我将波士顿的经度和纬度作为消息参数传递,我希望查询获取amesbury作为结果,因为两者都是邻近的城市,并且绝对是相距500000英里。
但是我的查询没有返回任何结果。问题是什么?
答案 0 :(得分:0)
地理坐标的格式不正确。理想情况下,它应该是两个数字的数组:
"geo": [-70.9300376, 42.8583925]
请阅读完整文档:http://www.mongodb.org/display/DOCS/Geospatial+Indexing