Почему Mongoose не может создать индекс в MongoDB Atlas? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть схема Mongoose, которая содержит поле с определенным индексом:

const reportSchema = new mongoose.Schema({
    coords: {
    type: [Number],
    required: true,
    index: '2dsphere'
    },
…
}

Она хорошо работает на моей локальной машине, поэтому, когда я подключаюсь к MongoDB через оболочку, я получаю этот вывод для db.reports.getIndexes():

[
{
    "v" : 2,
    "key" : {
        "_id" : 1
    },
    "name" : "_id_",
    "ns" : "weatherApp.reports"
},
{
    "v" : 2,
    "key" : {
        "coords" : "2dsphere"
    },
    "name" : "coords_2dsphere",
    "ns" : "weatherApp.reports",
    "background" : true,
    "2dsphereIndexVersion" : 3
}
]

Затем я развертываю это приложение в Heroku и подключаюсь к MongoDB Atlas вместо моей локальной базы данных.Он хорошо работает для сохранения и извлечения данных, но не создает индексы (только по умолчанию):

[
{
    "v" : 2,
    "key" : {
        "_id" : 1
    },
    "name" : "_id_",
    "ns" : "weatherApp.reports"
}
]

Что может вызвать эту проблему?Атлас позволяет создавать индексы через веб-интерфейс, и это хорошо работает, как и создание индексов из оболочки.Но Mongoose почему-то не справляется с этой операцией.

1 Ответ

0 голосов
/ 25 октября 2018

У меня была такая же проблема, когда я был на версии mongoose v5.0.16.Однако, поскольку я обновился до v5.3.6, теперь он создает (составные) индексы для меня в Mongo Atlas.(Я только что написал пример приложения с обеими версиями, чтобы убедиться, что это так).

Я не уверен, какая версия исправила эту проблему, но это где-то между v5.0.16 и v5.3.6, где v5.3.6 работает.

...