node.js - 使用 mongoose 在 mongodb 中设置集合的到期时间

下面是可以通过 mongo 终端设置集合的过期时间(一个 TTL)的命令:

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

如何使用 mongoose 从 Node.js 中的代码执行此操作?

最佳答案

在 Mongoose 中,您可以通过 expiresDate 字段上创建 TTL 索引。该字段的架构定义中的属性:

// expire docs 3600 seconds after createdAt
new Schema({ createdAt: { type: Date, expires: 3600 }});

注意:

  • MongoDB 的数据过期任务每分钟运行一次,因此过期的文档可能会在过期后持续一分钟。
  • 此功能需要 MongoDB 2.2 或更高版本。
  • 您可以在创建文档时将 createdAt 设置为当前时间,或者按照建议添加 default 为您执行此操作 here .
    • { createdAt: { type: Date, expires: 3600, default: Date.now }}

https://stackoverflow.com/questions/14597241/

相关文章:

mongodb - 如何在 MongoDB 中创建嵌套索引?

java - 如何通过Java在MongoDB中一次插入多个文档

mongodb - node.js 的 mongoose 中的十进制/ float

mongodb - 如何使用 Robomongo 连接到 MongoDB Atlas?

java - 如何使用 Java mongodb 驱动程序中的 "_id"字段查询文档?

node.js - 想要弄清楚NodeJS应用程序结构(完整的JavaScript堆栈)

ruby-on-rails - Mongoid 查找器不起作用?

python - pymongo 中的快速或批量更新

mongodb - 我控制修补程序上的 Mongo 错误

mongodb - 如何使用 Meteor Upsert