基于地理位置的查询无法在php中使用mongo

时间:2012-01-20 11:56:30

标签: php mongodb geolocation

我有一个名为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英里。

但是我的查询没有返回任何结果。问题是什么?

1 个答案:

答案 0 :(得分:0)

地理坐标的格式不正确。理想情况下,它应该是两个数字的数组:

"geo": [-70.9300376, 42.8583925]

请阅读完整文档:http://www.mongodb.org/display/DOCS/Geospatial+Indexing