翻译或纠错本页面
TTL索引¶
TTL索引是一种特殊索引,通过这种索引MongoDB会过一段时间后自动移除集合中的文档。这对于某些类型的信息来说是一个很理想的特性,例如机器生成的事件数据,日志,会话信息等,这些数据都只需要在数据库中保存有限时间。
注意事项¶
TTL索引有如下限制
它 不 支持 复合索引 。
被索引键 必须是 日期 type 的数据。
如果这个键存储的是一个数组,且在索引中有多个日期类型的数据(和一篇文档关联),那么当其中 最低 (比如,最早)过期阈值得到匹配时,这篇文档就会过期失效了。
TTL索引不能保证过期数据会被立刻删除。在文档过期和MongoDB从数据库中删除文档之间,可能会有延迟。
删除过期数据的后台任务 每隔60秒 运行一次。所以,在文档过期 之后 和 后台任务运行或者结束 之前 ,文档会依然存在于集合中。
删除操作的持续实际取决于您的 mongod 实例的负载。因此,在两次后台任务运行的间隔间,过期数据可能会继续留在数据库中 超过 60秒。
在其他方面,TTL索引是普通索引,并且如果可以的话,MongoDB会使用这些索引来匹配任意查询。