使用mongoose在MongoDB中设置集合的到期时间
以下是可以通过mongoterminal设置集合(TTL)到期时间的命令:
db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )
我如何从Node.js中的代码使用mongoose做到这一点?
在Mongoose中,通过该字段的模式定义中的expires
属性在Date
字段上创build一个TTL索引:
// expire docs 3600 seconds after createdAt new Schema({ createdAt: { type: Date, expires: 3600 }});
注意:
- MongoDB的数据过期任务每分钟运行一次,因此过期的文档可能会在到期之前持续一分钟。
- 此function需要MongoDB 2.2或更高版本。
- 您可以在创build文档时将
createdAt
设置为当前时间,或者按照此处的build议为您添加default
。-
{ createdAt: { type: Date, expires: 3600, default: Date.now }}
-
这段代码正在为我工作。
可能会有帮助
let currentSchema = mongoose.Schema({ id: String, name: String, packageId: Number, age: Number }, {timestamps: true}); currentSchema.index({createdAt: 1},{expireAfterSeconds: 3600});