У меня есть следующая схема Мангуста:
const GroupSchema = mongoose.Schema({
...
gps: {
type: Object,
required: true
}
...
})
Объект GPS, например, выглядит следующим образом: {долгота: 53,05, широта: 54,56}
У меня есть пользователи с их текущей позицией GPS. Они могут искать группу, которая им близка. Поэтому они могут искать группы с радиусом, например, 10 км.
Я могу использовать модуль geolib для расчета, находится ли точка GPS внутри круга или нет:
geolib.isPointInCircle(
{latitude: 51.525, longitude: 7.4575},
{latitude: 51.5175, longitude: 7.4678},
10000
);
Проблема в том, что в моей базе данных много групп, и я не хочу загружать их все, каждый раз, когда я ищу группу. Есть ли способ включить эту функцию geolib уже при обращении к базе данных и получать только те группы, которые удовлетворяют условию.
Может быть что-то вроде?
Group.findOne({}, geolib.isPointInCircle(
usersGPS, gps, 5000), callback)
Если это невозможно, у вас есть какие-либо другие решения или предложения?