#mongodb #geospatial
#mongodb #геопространственный
Вопрос:
У меня есть список достопримечательностей, скажем, ресторанов, театров, садов и т.д., Сохраненных в базе данных Mongo. Затем у меня есть приложение, которое отслеживает перемещения пользователя в городе и периодически собирает местоположение. Если я обнаружу, что человек находится «рядом» с интересующей меня точкой, мне нужно отправить ей / ему уведомление. «Близость» для POI является переменной величиной — для ресторана это может быть 100 м, для театра это может быть 200 м, для сада это может быть 20 м и т.д.
Каждый POI, конечно, сохраняется как отдельный документ. Теперь, есть ли способ запустить запрос в MongoDB с широтой / lon пользователя и получить список объектов, находящихся поблизости?
Скажем, мои документы похожи на это:
{ «type»: «restaurant», «name»: «Binny’s», «loc»: [-122.10396, 37.45093], «maxDist»: 100 }
{ «type»: «museum», «name»: «Ripley’s», «loc»: [-122.24546, 37.48251], «maxDist»: 500 }
Мне нужно запустить запрос, который выдаст мне список POI поблизости (на расстоянии не более метра ‘maxDist’ от POI) для заданного значения широты / lon, скажем, [-122.12098, 37.46001].
Есть ли способ построить запрос для достижения этого? Если мне нужно немного изменить структуру документа, это нормально.
Заранее спасибо.
Ответ №1:
Используйте $near. Это позволит вам запрашивать местоположение пользователя и все местоположения, которые находятся в пределах определенного расстояния.