首页 > 数据库 > > MongoDB 自动删除集合中过期的数据——TTL索引
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
}
})
过期数据的删除工作是由 mongod 后台线程来执行,每60秒进行一次。
对于复制集情况, TTL 后台线程只会删除主节点上过期的数据,从节点过期文档删除则依赖主节点(从节点的 TTL 后台线程是停止状态)。
对于查询而言,TTL 索引和其他索引没有区别。
官网文档:
https://docs.mongodb.com/manual/core/index-ttl/index.html
作者:学习园
来自个人博客: https://xuexiyuan.cn/article/detail/225.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3142715/ ,如需转载,请注明出处,否则将追究法律责任。