#javascript #mongodb #mongoose #indexing #mongoose-schema
#javascript #mongodb #mongoose #индексирование #мангуст-схема
Вопрос:
Я пытаюсь автоматически продлить срок действия документа, используя эти методы :
const schema = new mongoose.Schema(
{
field: { type: String },
expireAt: {
type: Date,
default: Date.now,
index: { expires: '2m' }
}
},
{ timestamps: true, autoIndex: true }
);
Но срок действия документа никогда не истекает, я пробовал другой синтаксис, удаляя или добавляя «Автоиндекс» и т. Д., Но ничего не получится. При проверке вкладки indexes в Mongodb Compass я могу четко видеть созданный индекс :
https://i.stack.imgur.com/JNlKE.png . Однако при проверке в оболочке mongo db.myCollection.getIndexes()
я вижу все предыдущие индексы, кроме одного «expireAt», который я только что создал. Я в замешательстве: я
Комментарии:
1. Если вы используете оболочку mongo, вы переключились на правильную базу данных?
2. Да, все запросы ‘db.oneCollection.find () и т. Д. …’ Дают мне правильные документы, они соответствуют тому, что видно в compass
3. Хм, тогда не уверен. Я протестировал, и кажется, что и Compass, и shell предоставляют правильные индексы для меня. Единственное, что я могу предложить, это перезапустить shell. Теоретически это не должно помочь, но кто знает.
4. Перезапуск не сработал, в итоге я переустановил mongodb после его полной деинсталляции, и теперь все работает. Что-то, о чем я не упомянул, это то, что в какой-то момент я преобразовал этот автономный экземпляр в набор реплик, чтобы опробовать метод watch, я, вероятно, сделал что-то не так.