Геопространственный запрос 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) {

});
Другие вопросы по тегам