不能使mongoose过期/ TTL工作
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(); });
我试图让caching在一定的时间后被删除。 我等了3分多钟,我插入的文件根本没有被删除。 我错过了什么吗?
一个首选的方法来做到这一点:
var cacheSchema = mongoose.Schema({ value: {}, createdAt: Date }); cacheSchema.index({ createdAt: 1 }, { expireAfterSeconds: 3600 }); mongoose.model( "Schema", cacheSchema );
因此索引被定义为在进行连接时进行部署,并被赋予适当的创build选项。
分离Schema
和model
实例定义可能是最好的实践。 如果您希望在其他地方引用该模式,通常很方便。
另请参阅有关TTL索引创build的MongoDB文档。
而且,math计算:60秒X 60分钟= 3600
在你的mongo shell中运行这个命令db.yourdb.getIndexes()
,看看有哪些索引已经创build。 请点击这里查看更多信息Mongoose过期财产无法正常工作