Единицы для использования для maxdistance и MongoDB?
Я пытаюсь разобраться с MongoDB и геопространственными поисками.
В основном, я хочу, чтобы пользователи могли запрашивать документы (изображения), которые
снимаются на заданном расстоянии от текущего местоположения пользователей. Таким образом, я ищу все изображения, снятые в пределах 1 км от места, где он стоит. Я пытаюсь использовать
приведенный ниже пример, но я не знаю, как установить значение maxdistance.
db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 }})
Итак, мой вопрос - это то, что я устанавливаю как maxdistance, если я ищу документы
в радиусе 1 км?
Я полностью застрял здесь.
Ответы
Ответ 1
Чтобы использовать запросы mongodb $near
с границами km, вам нужно преобразовать значение радиуса в km. По умолчанию mongodb $near принимает $maxDistance
как radius
.
Преобразовать расстояние на 111.12
(один градус приблизительно 111.12 километров) при использовании километра или оставить расстояние, поскольку оно находится на уровне степени
на ваш вопрос
что я устанавливаю как maxdistance, если я ищу документы в пределах Радиус 1 км?
вы можете использовать этот
db.places.find( { loc : { $near : [50,50] , $maxDistance : 1/111.12 } } )
Я ответил, что здесь mongo геопространственные функции здесь подробно. Вы можете проверить
Ответ 2
Начиная с версии 2.4 MongoDB вы можете указать радиус непосредственно в метрах как значение $maxDistance, например:
db.<collection>.find({loc: {$near :
{$geometry :
{
type: 'Point',
coordinates: [<longitude> , <latitude>]
}
},
$maxDistance: 10*100
}
});