MongoDB 自动删除集合中过期的数据——TTL索引

2020-05-22 00:00:00 索引 创建 字段 删除 是一个

简介

TTL (Time To Live, 有生命周期的) 索引是特殊单字段索引,MongoDB可以用来在一定时间后自动从集合中删除文档的特殊索引。 这对于某些类型的数据非常好,例如机器生成的事件数据,日志和会话信息,这些信息只需要在数据库中保留一段时间。

​ 创建 TTL 索引,只需要在使用 db.collection.createIndex() 方法,对字段值为日期或者包含日期的数组设置 expireAfterSeconds 选项即可。

1、如果字段是一个数组,并有多个日期值时,MongoDB使用低(即早)日期值来计算失效阈值。
2、如果字段不是日期类型也不是一个包含日期的数组类型那么文档就永远不会过期。
3、如果一个文档不包含索引字段,该文档也不会到期。

示例

// 创建一个 TTL 索引
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 600 } )

// 修改TTL索引的过期时间
db.runCommand( { collMod: "eventlog",
                 index: { keyPattern: { lastModifiedDate: 1 },
                          expireAfterSeconds: 3600
                        }
})

相关文章