У меня есть коллекция магазинов с геопространственным индексом по местоположению.
Что я пытаюсь сделать, это учитывая широту пользователя, широту и радиус поиска (ми), я хочу вернутьсписок магазинов, которые находятся в этих параметрах.
Я видел следующий пример в документации 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, в обновленной документации есть 3-й параметр для запроса $ near: вы также можете использовать $ near с максимальным расстоянием
db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)
Значение для $maxDistance в радианах, поэтому мне пришлось взять расстояние в милях и разделить его на 69.
Спасибо!