当你对一个字段建立TTL索引后,后台会有一个单线程,不断查询(默认60s一次)索引的值来判断数据是否过期,并且删除数据的动作还依据mongod实例的负载情况,如果负载很高,可能会稍微延后一段时间再删除。
注意:
TTL过期索引设置的字段必须是Date()类型,比如下面这种:
字符串类型的日期字段设置之后是无效的,比如下面这种:
如何设置:
TTL索引和普通索引的创建方法一样,只是要多加一个expireAfterSeconds属性:
假如目前过期的数据不需要实时删除,而是统一晚上凌晨2点业务低峰期再删除,可以在数据插入的时候追加一个过期时间的字段,这个字段值就固定设置为第二天的凌晨2点,然后针对这个字段设置过期事件,expireAfterSeconds过期时间设置为0就可以做到