Подтвердить что ты не робот

Связанные запросы MongoDB: Как преобразовать милю в радиан?

У меня есть коллекция магазинов с геопространственным индексом по расположению.

То, что я пытаюсь сделать, это указать широту, широту и радиус поиска (mi), я хочу вернуть список магазинов, находящихся в этих параметрах.

Я видел следующий пример в документации MongoDB (http://www.mongodb.org/display/DOCS/Geospatial+Indexing), но похоже, что расстояние находится в радианах.

center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})

Итак, какова формула для перевода миль в радианы?

Решение Удивительные люди в mongodb-user помогли мне найти ответ. В принципе, то, что я действительно искал, было способом ограничить расстояние.

Per, обновленная документация, есть третий параметр для запроса $near: Вы также можете использовать $near с максимальным расстоянием

db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)

Значение для $maxDistance находится в радианах; поэтому я должен был пройти дистанцию ​​в милях и разделить ее на 69.

Спасибо!

4b9b3361

Ответ 1

Как говорят документы:

На всех расстояниях используются радианы. Это позволяет легко размножаться радиусом земли (около 6371 км или 3959 миль), чтобы получить расстояние в вашем выборе единиц. И наоборот, при выполнении запросов разделите радиус земли.

поэтому вам просто нужно разделить радиус радиуса земли. в вашем примере это будет:

radius = 10/3959