不能使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选项。

分离Schemamodel实例定义可能是最好的实践。 如果您希望在其他地方引用该模式,通常很方便。

另请参阅有关TTL索引创build的MongoDB文档。

而且,math计算:60秒X 60分钟= 3600

在你的mongo shell中运行这个命令db.yourdb.getIndexes() ,看看有哪些索引已经创build。 请点击这里查看更多信息Mongoose过期财产无法正常工作