Привет, специалисты MongoDB
Я пытаюсь получить некоторые результаты запроса, используя различные функции определения местоположения MongoDB ($ near, $ geoNear и другие).
У меня есть модель мангуста с типом geoJSON.
const geoSchema = new Schema({
type: {
type: String,
default: 'Point',
},
coordinates: {
type: [Number],
},
});
const pickupSchema = new Schema({
geo_location_from: geoSchema,
geo_location_to: geoSchema,
});
pickupSchema.index({ geo_location_from: '2dsphere' });
pickupSchema.index({ geo_location_to: '2dsphere' });
То, чего я пытаюсь достичь, это рядом с местом проведения мероприятия.
У меня есть главное событие захвата от А до В, и, как показано на рисунке, у меня есть Широта и Долгота всего местоположения. Теперь я пытаюсь запросить все эти объекты событий из базы данных, где событие geo_location_from находится рядом с местоположением A (пример: A1, A2, A3), а geo_location_to находится рядом с местоположением B (B1, B2).
Вот что я сделал, что не правильно. Я не уверен на 100%.
Pickup.find(
{
$and: [{
geo_location_from: {
$near: {
$maxDistance: 1000,
$geometry: {
type: 'Point',
coordinates: [args.longitude_from, args.latitude_from],
},
},
},
}, {
geo_location_to: {
$near: {
$maxDistance: 1000,
$geometry: {
type: 'Point',
coordinates: [args.longitude_to, args.latitude_to],
},
},
},
}],
},
)
Некоторые из моих попыток заканчивались тем, что давали различные виды ошибок.
как Слишком много выражений geoNear и многие другие.
У кого-нибудь есть хорошее решение этой проблемы?