Геопространственный запрос MongoDB ничего не возвращает
У меня есть коллекция с 2dsphere
индекс и хотите использовать $geoWithin
а также $centerSphere
функции для запроса.
Выдержка из модели:
{
// ...
coordinates: {
coordinates: {
type: Array,
index: '2dsphere'
}
}
// ...
}
Я успешно вставил кучу документов в базу данных и теперь пытаюсь сделать запрос через:
Model.find({
coordinates: {
coordinates: {
$geoWithin: {
$centerSphere : [ [ lng, lat], r ]
}
}
}
})
Проблема, с которой я сталкиваюсь, заключается в том, что вызов не возвращает ничего, ни ошибки, ни данных. Я попробовал это в mongo shell
так же как и в моем node.js
приложение с долготой и широтой объектов, которые я могу подтвердить, были вставлены в базу данных. Я также пытался использовать $near
с $maxDistance
с тем же результатом. Кроме того, я переключил широту и долготу только для проверки... и я конвертирую r
в радианах путем деления на радиус Земли.
У меня нет идей о том, что идет не так, и я благодарен за любые предложения!
1 ответ
Я думаю, что вы должны изменить свою модель, но вместо этого используйте "точечную нотацию":
Model.find({
"coordinates.coordinates": {
"$geoWithin": {
"$centerSphere" : [ [ lng, lat], r ]
}
}
},function(err,callback) {
});