Когда я делаю запрос к базе данных MongoDB, используя mon goose и геопространственный оператор mongoDB $near
(также пытался $nearSphere
), мой код возвращает статус HTTP 200 с правильным списком документов, но они равны не отсортировано от ближайшего к дальней (что, к сожалению, не соответствует цели оператора $near
).
Я убедился, что у меня есть индекс "2dsphere", созданный для моего ключа geometry
, и что Этот ключ отформатирован в соответствии с рекомендациями Geo Json.
Это код, который я использую для запроса к базе данных:
const locations = await Location.find({
geometry: {
$near: {
$geometry: {
type: 'Point',
coordinates: [lon, lat]
}
}
}
});
Где lat и lon Floats
.
3 первых объекта, возвращенных из моего приложения: следующее:
{
"_id": "5e2ef89e326e885327c6e898",
"address": "20 Brune Street",
"availability": false,
"distance_to": 10583,
"power": 3840,
"coordinates": {
"latitude": 51.51792,
"longitude": -0.075343
}
},
{
"_id": "5e2ef79d326e885327c6e882",
"address": "32 Bedford Row",
"availability": true,
"distance_to": 8028,
"power": 3840,
"coordinates": {
"latitude": 51.520297,
"longitude": -0.116327
}
},
{
"_id": "5e2ef801326e885327c6e891",
"address": "42 York Way",
"availability": false,
"distance_to": 8322,
"power": 3840,
"coordinates": {
"latitude": 51.532265,
"longitude": -0.12251
}
}
Обратите внимание, что я сознательно не включаю ключ Geo Json в возвращаемые объекты, но они присутствуют в каждом документе базы данных.
Я пропал что-то?
Заранее спасибо!