使用mongoose在MongoDB中设置集合的到期时间

以下是可以通过mongoterminal设置集合(TTL)到期时间的命令:

db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } ) 

我如何从Node.js中的代码使用mongoose做到这一点?

       

网上收集的解决方案 "使用mongoose在MongoDB中设置集合的到期时间"

在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});