我在node.js中使用mongoose。我正在测试Time-To-Live功能,并在db模式中将我的文档设置为在X时间后过期:
var adInfos = new mongoose.Schema({
inf : { type: Object, required: false },
created: { type: Date, default: Date.now, expires:60 }
});
这似乎是正确的,但在删除expires
属性后,新文档似乎仍然过期。
我也试过设置expires: false
和expires:0
,但这也不起作用。
2条答案
按热度按时间5lhxktic1#
Mongoose永远不会删除索引,所以如果您更改了模式中的索引属性,它们将在您手动删除现有索引之后才生效。
我不知道你的集合名是什么,但在shell中它应该是这样的:
使用
db.adInfos.getIndexes()
查看集合上的索引。gcuhipw92#
@JohnnyHK的回答是有效的,我为那些通过mongoose创建TTL的人添加了一些早期步骤(在那里你不能控制
createdAt
名称):连接到您的数据库:
为了知道你需要删除什么索引,首先你应该得到所有的索引:
你应该得到如下的东西:
然后删除索引及其名称: