$ geoNear соответствует ближайшему массиву в этом вопросе предлагается использовать $ geoNear и его опцию "includeLocs". Тем не менее, этот агрегат не поддерживается в функции MongoDb Stitch. Вы можете прочитать в документации https://docs.mongodb.com/stitch/mongodb/actions/collection.aggregate/#unsupported-aggregation-stages
В MongoDb Stitch я могу легко делать запросы с геопространственными данными, используя $ geoWithin. Но я не могу отделить свою модель возвращения. Есть ли альтернатива «includeLocs» или как я могу отфильтровать результат $ geoWithin?
Моя модель:
[
{
"locations": [
{
"address": "bla bla bla",
"city": "Avila Beach",
"coordinates": [
-120.73605,
35.17998
],
"country": "Usa",
"prods": [
{
"brand": "kumcho",
"cagtegory": "tire",
"id": "1_kumcho"
},
{
"brand": "micheline",
"cagtegory": "tire",
"id": "1_micheline"
},
{
"brand": "setrr",
"cagtegory": "rim",
"id": "1_setrr"
}
],
"state": "5 Cities"
},
{
"address": "data data data",
"city": "Arvin",
"coordinates": [
-118.84151,
35.21617
],
"country": "Usa",
"prods": [
],
"state": "Bakersfield",
}
],
"name": "My Car",
"admin": "John"
}
]
Согласно этой модели, когда я запрашиваю, как показано ниже.
.find({"locations.coordinates": {$geoWithin: {$centerSphere: [[-120.55361687164304, 35.22037830812648], 15/3963.2]}}},{"locations.coordinates":1})
.toArray()
Совокупная альтернатива.
const pipeline = [
{$match: {"locations.coordinates": {$geoWithin: {$centerSphere: [[-120.55361687164304, 35.22037830812648], 15/3963.2]}}}}
];
const cursor = coll.aggregate(pipeline);
результат:
[
{
"locations": [
{
"coordinates": [
{
"$numberDouble": "-120.73605"
},
{
"$numberDouble": "35.17998"
}
]
},
{
"coordinates": [
{
"$numberDouble": "-118.84151"
},
{
"$numberDouble": "35.21617"
}
]
}
]
}
]
Но я хочу конкретный объект массива документа с корнем, который совпадает с искомыми координатами.
Например, мне нужно что-то подобное.
Поиск значений:
lon = -120.55361687164304
lat = 35.22037830812648
kmml = 3963.2
(это мили)
distance = 15
В соответствии с указанными выше поисковыми значениями, согласованные координаты модели:
"coordinates": [-120.73605, 35.17998]
Итак, я хочу, чтобы результат был примерно таким:
[
{
"locations": [
{
"address": "bla bla bla",
"city": "Avila Beach",
"coordinates": [
-120.73605,
35.17998
],
"country": "Usa",
"prods": [
{
"brand": "kumcho",
"cagtegory": "tire",
"id": "1_kumcho"
},
{
"brand": "micheline",
"cagtegory": "tire",
"id": "1_micheline"
},
{
"brand": "setrr",
"cagtegory": "rim",
"id": "1_setrr"
}
],
"state": "5 Cities"
}
],
"name": "My Car",
"admin": "John"
}
]
возможно ли вернуть определенные поля в документ mongodb?
Спасибо.