【发布时间】:2019-07-26 12:49:45
【问题描述】:
我正在尝试在 MongoDB 中创建一个 TTL 索引。我在这里阅读了答案,Answer,这非常有帮助。
问题是文件不会过期。代码如下:
var AcThSchema = new mongoose.Schema({
createdAt: {
type: Date,
expires: '1m',
default: Date.now
},
key: {
type: String,
required: true,
unique: true
}
});
我注意到的奇怪的事情是,当我使用值 1 而不是 Date.now 作为 createdAt 的默认值时,文档确实会在几秒钟后被删除(可能是下次运行 mongo 的 TTL 进程时)
为什么默认值 1 的文档被删除,但 Date.now 的文档却没有?
【问题讨论】:
-
很好,您找到了参考,但您需要阅读所有答案。注意这一点; It is important to note that the TTL process runs once every 60 seconds so it is not perfectly on time always.。至于“默认值为 1”,在 BSON 优先级中,
1小于自纪元以来的当前毫秒数,这是 BSON 日期的存储方式。 -
@NeilLunn 我已经阅读了您链接的答案。但问题不在于删除延迟了几秒钟,而在于它们根本没有被删除。