Моя схема выглядит примерно так:
...
...
pointA: GeoJSON point
pointB: GeoJSON point
...
...
Я передаю два параметра: геопункт (x) и массив геопунктов (y) и хочу вернуть только те результаты, которые соответствуют следующим критериям:
-> Расстояние между x
и pointA
не должно превышать 1000 м.
-> Любая точка массива y
должна l ie в пределах 100 м от pointB
.
К сожалению, похоже, что MongoDB не поддерживает несколько запросов $ geoNear, конвейеризованных вместе
Следующий код
Collection
.aggregate([
{
$geoNear: {
distanceField: "calculatedDistance",
spherical: true,
maxDistance: 1000,
near: x,
key: "pointA.coordinates"
}
},
{
$or: [
{
$geoNear: {
spherical: true,
maxDistance: 100,
key: "pointB.coordinates",
near: {
type: "Point",
coordinates: y[0]
},
distanceField: "calculatedDistanceB"
}
},
...
...
...
...
{
$geoNear: {
spherical: true,
maxDistance: 100,
key: "pointB.coordinates",
near: {
type: "Point",
coordinates: y[i]
},
distanceField: "calculatedDistanceB"
}
}
]
}
])
Выдает ошибку, говорящую $geoNear is only valid as the first stage in a pipeline.
Как я могу выполнить несколько геопространственных проверок в одном запросе?