Связанные запросы 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.
Спасибо!
Ответы
Ответ 1
Как говорят документы:
На всех расстояниях используются радианы. Это позволяет легко размножаться радиусом земли (около 6371 км или 3959 миль), чтобы получить расстояние в вашем выборе единиц. И наоборот, при выполнении запросов разделите радиус земли.
поэтому вам просто нужно разделить радиус радиуса земли.
в вашем примере это будет:
radius = 10/3959