var mongoose = require('mongoose'), Cache, cache;
mongoose.connect('mongodb://localhost:27017/test');
Cache = mongoose.model('Cache', mongoose.Schema({
value: {},
createdAt: {type: Date, expires: 3600}
}));
cache = new Cache({
createdAt: new Date(),
value: {foo: 'bar'}
});
cache.save(function(err, obj) {
console.log(err, obj);
process.exit();
});
我试图在一段时间后删除缓存。我等了3分多钟,我插入的文件根本没有被删除。我错过了什么吗?
答案 0 :(得分:2)
执行此操作的首选方法:
var cacheSchema = mongoose.Schema({
value: {},
createdAt: Date
});
cacheSchema.index({ createdAt: 1 }, { expireAfterSeconds: 3600 });
mongoose.model( "Schema", cacheSchema );
因此,index被定义为在建立连接时进行部署并获得正确的创建选项。
分隔Schema
和model
实例定义可能是最佳做法。如果您希望在其他地方引用该架构,通常会很方便。
另请参阅有关TTL index创建的MongoDB文档。
但是,日期数学:60秒X 60分钟= 3600
答案 1 :(得分:0)
在mongo shell中运行此命令db.yourdb.getIndexes()
,查看已创建的索引。点击此处了解更多信息Mongoose expires property not working properly