Задать вопрос
@serious911

Гео поиск в MongoDB?

Работаю над поиском данных с привязкой к геолокации в MongoDB. Например, есть список пользователей и для каждого указано координаты в виде longitude, latitude. Необходимо сделать сортировку пользователей в зависимости от расстояния к конкретной точке [longitude, latitude] + вывести расстояние.

Делаю все с помощью встроеного геопоиска MongoDB + Mongoose примерно так:
User.aggregate([
{
$geoNear: {
near: [latitude, longitude],
distanceField: "distance",
distanceMultiplier: 1000*1000,
maxDistance: 1/111.12,
spherical:true
}
}
]);


Все вроде работает, но никак не могу разобратся как работает distanceMultiplier, maxDistance. Мне нужно искать пользователей в радиусе например 500 метров и выводить расстояние в метрах.

Подскажите, пожалуйста, какие числа подставлять и как работают эти параметры.

Спасибо.
  • Вопрос задан
  • 922 просмотра
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
HackerX
@HackerX
Работаю в компании VOLO - Team Leader
var maxDistance = Number(query.distance);
  var limit = Number(query.limit);
  var page = Math.max(0, query.page);

  var loc = [];
  loc[0] = Number(query.lon);
  loc[1] = Number(query.lat);

  User.find({
      loc: {
        $near: loc,
        $maxDistance: maxDistance
      }
    }).limit(limit).skip(limit * page).sort({username: 'asc'}).exec(function(err, locations) {
            // ....
    });


    // User schema
   /*
     ....
     loc: {
       type: [Number],
       index: '2d'
     }
     ....
   */
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы