首页/数据/NoSQL 速查/TTL 索引自动过期文档
MongoDB99 条

TTL 索引自动过期文档

给日期字段建 TTL 索引,后台线程按 expireAfterSeconds 定时清理过期文档;可用 collMod 调整过期时间。

NoSQL 速查数据更新于 2026-10-12
创建createIndex({ expireAt: 1 }, { expireAfterSeconds: 3600 })
调整collMod 修改 expireAfterSeconds
机制后台线程约每 60 秒轮询一次,删除是异步的

创建与调整

创建与调整
db.sessions.createIndex({ expireAt: 1 }, { expireAfterSeconds: 3600 })
db.runCommand({ collMod: "sessions", index: { keyPattern: { expireAt: 1 }, expireAfterSeconds: 7200 } })
过期时间基于字段值换算,字段必须是日期类型(或日期数组,按其中最早时间处理)。

易错点

  • 删除不保证“到点即删”,依赖后台线程与负载,对精确性敏感的场景自行在查询侧过滤

数据来源与参考

  • MongoDB Manual: TTL Indexes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌