mongodb索引 过期索引

本文详细介绍了MongoDB中过期索引的概念及其应用场景,包括如何创建过期索引、注意事项及限制条件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过期索引,指的是一段时间后会过期的索引,在索引过期后,相应的数据会被删除,这适合存储一些在一段时间之后会失效的数据,比如用户的登录信息,想要用户登录信息2天后失效,需要用户重新登录,或者存储的日志,希望这些日志在一段时间后删除

 

建立方法
> db.test2.ensureIndex({time:1},{expireAfterSeconds:30})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 4,
    "numIndexesAfter" : 5,
    "ok" : 1
}
与普通索引不同的是,后面需要加个参数,expireAfterSecondes,他的值是秒数,用来设置过期索引的过期时间

 

建立好后,我们插入一条数据
> db.test2.insert({time:new Date()})
WriteResult({ "nInserted" : 1 })
再查询
> db.test2.find()
{ "_id" : ObjectId("5b60e31524326393d99a4f64"), "x" : 1 }
{ "_id" : ObjectId("5b6235d23fb2bed9140233fd"), "x" : 1, "y" : 2, "z" : 3 }
{ "_id" : ObjectId("5b62361e3fb2bed9140233fe"), "x" : [ 1, 2, 3, 4, 5 ] }
{ "_id" : ObjectId("5b623a513fb2bed9140233ff"), "time" : ISODate("2018-08-01T22:55:13.369Z") }

 

按照之前的设置,这条数据会在30s后删除,我们等待30s后,再看这条数据
> db.test2.find()
{ "_id" : ObjectId("5b60e31524326393d99a4f64"), "x" : 1 }
{ "_id" : ObjectId("5b6235d23fb2bed9140233fd"), "x" : 1, "y" : 2, "z" : 3 }
{ "_id" : ObjectId("5b62361e3fb2bed9140233fe"), "x" : [ 1, 2, 3, 4, 5 ] }
发现那条插入时间的数据已经不见了

 

过期索引的限制
1、存储在过期索引字段的值必须是指定的时间类型
  说明:比如是ISODate或者ISODate数组,不能使用时间戳,否者不能被自动删除
     比如> db.test2.insert({time:1}),这种是不能被删除的
2、如果指定了ISODate()数组,则按照最小的时间进行删除。
3、过期索引不能是复合索引,因为我们不能指定两个过期时间索引
4、删除时间不是精确的
  说明:删除过程是由后台程序每60s跑一次,而且删除也需要一些时间,索引存在误差

 

 

转载于:https://www.cnblogs.com/wzndkj/p/9404969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值