У меня есть коллекция магазинов с геопространственным индексом по расположению.
То, что я пытаюсь сделать, это указать широту, широту и радиус поиска (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.
Спасибо!