MST

星途 面试题库

面试题:MongoDB中TTL索引的基本原理及创建方法

请阐述MongoDB TTL索引是什么,它的工作原理是什么?并说明如何在MongoDB集合中创建一个TTL索引,假设我们有一个名为 'users' 的集合,其中有一个 'createdAt' 字段记录用户创建时间,我们希望根据这个字段创建TTL索引以自动清理过期用户数据,写出具体的创建代码。
47.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

MongoDB TTL索引

TTL(Time to Live)索引是MongoDB中的一种特殊索引类型,用于自动删除集合中已过期的文档。它主要针对包含日期时间字段的文档,MongoDB会定期检查这些文档的日期时间字段值,若该值距当前时间超过设定的TTL时间,文档将被自动删除。

工作原理

  1. 后台线程:MongoDB有一个后台线程定期(默认每60秒)检查具有TTL索引的集合。
  2. 比较时间:该线程会将文档中TTL索引所对应的日期时间字段值与当前系统时间进行比较。
  3. 删除过期文档:如果日期时间字段值表明文档已过期(例如,文档创建时间距今超过了指定的TTL时长),MongoDB会自动删除该文档。

创建TTL索引代码

在MongoDB中,可以使用createIndex方法为users集合的createdAt字段创建TTL索引,示例代码如下:

db.users.createIndex( { "createdAt": 1 }, { expireAfterSeconds: <秒数> } );

其中<秒数>为从文档的createdAt字段值开始,经过多少秒后该文档被视为过期并删除。例如,如果希望在用户创建1天(86400秒)后自动删除用户数据,代码为:

db.users.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 86400 } );