我正在开发一个 PHP 应用程序,它将历史日志存储在 MongoDB 集合中。
1 小时后,这些数据不再重要,并且会被每小时运行的 CRON 进程删除。
问题是,有没有其他办法可以让这些文件在插入一段时间后自动删除呢?
非常感谢!
要使文档在一定秒数后过期,您可以创建一个 TTL 索引,它是一个特殊的索引属性,它依赖于 mongod 中的后台线程来读取目标索引日期值并对已过期的索引执行删除操作。
\n\n为此,您需要一个createdAt字段来存储日志集合中的插入日期,例如您可以使用“new Date()\xe2\x80\x9d
\n\n要为集合启用 TTL,请使用 EnsureIndex() 方法来创建带有 expireAfterSeconds 附加属性的索引。
\n\ndb.log.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
\n\n该语句将创建一个 TTL 索引,当createdAt值早于createdAt值+expireAfterSeconds值(3600 = 60秒* 60分钟)时,MongoDB将自动从日志集合中删除文档。
\n\n删除过期文档的后台任务每 60 秒运行一次
\n\n我还建议您查看以下文章,它准确地解释了完整的过程:http://mongodbspain.com/en/2014/02/08/expire-data-from-collections-using-ttl/
\n\n问候。
\n