我创建了一个包含此属性的Schema:
expire: {
type: Date,
default: Date.now,
expires: 60
}
创建新文档时,它会成功将过期字段设置为当前日期时间。
没有为集合创建索引。
我随后添加了
model.on('index',function(err){
console.log('index created');
if (err) {
console.log(err);
}
});
两个日志都没有出现。
所以我假设mongoose甚至没有尝试在集合上创建ttl索引,但我不明白为什么不这样做。我错过了一步吗?我是不是想自己创建索引? mongoose docs似乎暗示mongoose处理索引的创建。
答案 0 :(得分:0)
mongoosejs确实处理了可疑的索引创建。为了找到问题,我添加了一个ensureIndexes调用,如下所示:
model.ensureIndexes(function (err) {
console.log('ensure index', err)
})
然后显示其中一个现有索引(唯一的电子邮件地址)失败,因为数据库中的现有文档并不是唯一的。
修复此问题,上面的代码然后工作正常。希望这可以帮助其他任何遇到猫鼬TTL问题的人。