mongodb 过期 属性 未过期

mongoosedb expires property not expiring

我创建了一个包含此 属性:

的架构
expire: {
    type: Date,
    default: Date.now,
    expires: 60
}

创建新文档后,它会成功将过期字段设置为当前日期时间。

没有在集合上创建索引。

我随后补充

model.on('index',function(err){
    console.log('index created');
    if (err) {
        console.log(err);
    }
});

两个日志都没有出现。

所以我假设 mongoose 甚至没有尝试在集合上创建 ttl 索引,但我不明白为什么不这样做。我错过了一步吗?我打算自己创建索引吗?猫鼬文档似乎暗示猫鼬处理索引的创建。

mongoosejs 确实像怀疑的那样处理了索引的创建。为了找到问题,我添加了一个 ensureIndexes 调用,如下所示:

model.ensureIndexes(function (err) {
    console.log('ensure index', err)
})

这表明现有索引之一(唯一电子邮件地址)失败,因为数据库中的现有文档不是唯一的。

解决这个问题上面的代码可以正常工作。希望这对遇到猫鼬 TTL 问题的其他人有所帮助。