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 问题的其他人有所帮助。
我创建了一个包含此 属性:
的架构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 问题的其他人有所帮助。