Запрос на основе геолокации не работает в монго из php - PullRequest
0 голосов
/ 20 января 2012

У меня есть коллекция монго под названием город со следующим json

{
  "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
                        )
                    )
                )
            )
        );

В этот код я передаю долготу и широту Бостона в качестве аргумента сообщения, и я ожидаю, что запрос приведет к получению amesbury, так как оба являются соседними городами и определенно находятся на расстоянии 500000 миль друг от друга.

Но мой запрос не возвращает никаких результатов. В чем может быть проблема?

1 Ответ

0 голосов
/ 20 января 2012

Географические координаты не в правильном формате.В идеале это должен быть массив из двух чисел:

"geo": [-70.9300376, 42.8583925]

Пожалуйста, прочитайте полную документацию: http://www.mongodb.org/display/DOCS/Geospatial+Indexing

...