mongodb数据条目过期设置

【MongoDB】数据的自动过期,TTL索引 在近期的工作中,使用了MongoDB来保存了一些日志数据,但是这些日志数据具有一定的时效性,也就是按照业务的需要,保存xx天即可,在超过了这个时间之后,需要删除过时的日志。按照之前的做法,可以使用定时任务,例如:Spring的定时器,xxl-job等工具,在每天凌晨的时候删除数据,这种方法虽然可行,但是需要额外的编码工作。那有没有一种方式能够简单的搞定过期数据的清理呢?当然,MongoDB提供了一种TTL索引的机制,可以非常方便的处理这种需求,下面是官方文档,有阅读能力的同学可以直接看这个文档。 阅读详情

mongodb数据条目过期设置

2018年08月01日 19:20:05 秦汉唐天下 阅读数:446

Mongodb自带时间过期删除的机制,其机制主要是使用Time To Live(TTL) 索引实现的

注意:以下集中情况是无法使用TTL索引的
(1)TTL索引是单字段索引,混合索引不支持TTL,并且也会忽略expireAfterSeconds属性
(2)在_id 主键上不能建立TTL索引
(3)在capped collection中不能建立TTL索引,因为MongoDB不能从capped collection中删除文档
(4)你不能使用createIndex()去更改已经存在的TTL索引的expireAfterSeconds值,如果想更改expireAfterSeconds,可以使用collMod命令,否则你只能删除索引,然后重建了
(5)你不能在已有索引的字段上再创建TTL索引了,如果你想把非TTL索引改为TTL索引,那就只能删除重建索引了

索引创建

假设过期检时间字段名为:createdAt,具体语句如下:

(1)方式一

db.test.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )

expireAfterSeconds指定为3600秒后过期

(2)方式二

db.test.createIndex({"createdAt":1},{expireAfterSeconds:0})

此时以createdAt字段里的具体日期值为过期时间

注意:

(1)createdAt中的日期存入mongodb后为utc格式日期,但取出时会恢复为存入时的时区值,所以插入和取出时使用正常Date对像即可

(2)过期删除时,如果业务繁忙,负载有可能会比较高,建议用第二种方式定时为业务不繁忙时进行删除操作

重建索引

(1)获取所有索引

db.test.getIndexes()

(2)删除所有索引
db.test.dropIndexes()

(3)更改索引过期时间

db.runCommand({collMod:"test",index:{keyPattern:{createdAt:1},expireAfterSeconds:0}})

其它相关命令

命令行插入时间方式

db.test.insert( {"createdAt": new Date(),"logEvent": 2} )

格林威治时间转为毫秒数(java代码)

 
  1. /**

  2. * 将格林威治时间转为毫秒数

  3. * 格林威治时间格式:Wed Aug 08 00:00:00 CST 2018

  4. * @param time

  5. * @return

  6. */

  7. public static long greenwichStrToTimeMillSec(String time) {

  8. try {

  9. SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);

  10. Date date = sdf.parse(time);

  11. return date.getTime();

  12. } catch (ParseException e) {

  13. throw new Exception(ErrorCode.UNKNOWN_EXCEPTION, e.getMessage());

  14. }

  15. }

 

MongoDB 自动删除集合中过期的数据 我们使用Mongo时,经常会存一些不太重要的事件、日志等数据,这部分数据有时效性,一般是有问题时辅助排查使用,太久以前的历史数据就没什么价值了,但是不做特殊处理的话,数据量会越来越大,这里就用到了TTL索引,类似于redis给key设置过期时间。TTL (Time To Live, 有生命周期的) 索引是特殊单字段索引,MongoDB可以用来在一定时间后自动从集合中删除文档的特殊索引。这对于某些类型的数据非常好,例如机器生成的事件数据,日志和会话信息,这些信息只需要在数据库中保留一段时间。 阅读详情

相关推荐

Mongodb设置TTL索引自动清除数据与过期数据的方法

今天小编就为大家分享一篇关于Mongodb设置TTL索引自动清除数据与过期数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

编码技巧——MongoDB的过期时间

较适合一些记录【消息数据/事件数据】这种具备时效性数据的业务场景;原理上,MongoDB通过一个TTL索引来实现这种机制:MongoDB通过一个后台线程去不断的读取集合中某个日期类型的索引,并且移除掉满足过期条件的文档documents;下面介绍下如何使用;......

娜娜米的博客 7802

Flink项目基础配置指南

在大数据处理领域,Apache Flink凭借强大的实时流处理和批处理能力,成为众多开发者的首选工具。在日常工作中,开发Flink Jar任务是常见需求,但每次都需重复配置日志、梳理pom依赖、设置打包插件等,流程繁琐且易出错。为提升开发效率,减少重复劳动,将这些基础配置进行整理归纳十分必要。本文将围绕Flink项目的本地日志配置、pom依赖及插件配置展开详细介绍,为开发者提供一套可直接复用的基础配置方案,助力Flink项目高效开发。在Flink项目中,日志是了解任务运行状态、排查问题的重要依据。本地日志配

qq_42773076的博客 1210

Mongodb 设置过期时间Expire Date

给collection:AuthCode 设置过期时间Expire Date 为5分钟 : db.AuthCode.ensureIndex({"createdAt": 1},{expireAfterSeconds: 300}) 步骤: [root@app bin]# ./mongo 127.0.0.1:27017 MongoDB shell version: 3.0.6

AI时代光年 2万+

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 286

智能汽车域控制器FOTA升级方案探讨

上文提到的Entry属性,包括Active 属性, Bootable 属性, Successful 属性, Retrycnt 属性 ,Active 属性用于标志槽的优先级,bootloader优先选择Active 属性=1的槽启动,Bootable 属性标志槽可否可启动,Successful 属性标志槽是否成功启动过,Retrycnt 属性标志槽可尝试启动的次数。芯片启动后,首先进入Bootloader阶段,此阶段将读取存储系统的分区属性,根据属性值进行逻辑判断,并确定进入哪个分区,详见流程图。

huibian1234的博客 1570

细说Mmongo ES 数据过期机制

数据过期在redis上非常容易实现,mongo中可使用TTL索引实现类似的功能。

小石头记 2742

20220601超简单百度地图街景图片爬取+绿视率计算

真的不难咯。

weixin_39676904的博客 1万+

mongodb数据条目过大,需要对一些数据进行过期设置

Mongodb自带时间过期删除的机制,其机制主要是使用Time To Live(TTL) 索引实现的 注意:以下集中情况是无法使用TTL索引的 (1)TTL索引是单字段索引,混合索引不支持TTL,并且也会忽略expireAfterSeconds属性 (2)在_id 主键上不能建立TTL索引 (3)在capped collection中不能建立TTL索引,因为MongoDB不能从capped ...

liaonanfeng88的优快云博客 771

公文流转系统

公文录入区 | QLineEdit(文号/标题)、QComboBox(公文类型/紧急程度)、QTextEdit(正文)、QListWidget(附件列表)、QPushButton(上传附件/保存草稿/提交审批) |// 按时间范围获取。QStringList userNames = {"张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑十一", "王十二"};

寒寒豆豆软件公司的博客 550

【深度学习新浪潮】Nano Banana(Gemini 2.5 Flash Image)技术解析与开发者实操指南

重新定义了 AI 图像生成的产业标准。它不仅是“平民化的视觉工厂”,更是推动内容生产从“创意试错”转向“精准制造”的关键工具。未来,随着视频生成能力的加入(谷歌计划支持“文字指令 - 动态场景 - 多平台适配”全流程),Nano Banana 有望进一步颠覆影视、广告等领域的创作范式。:批量生成多场景图,模特姿态自然,服装褶皱和材质细节高度一致,节省 90% 拍摄成本。模型的非正式代号,是一款革命性的 AI 图像生成与编辑工具,主打。:生成细节丰富的厨师特写,光影自然,皮肤纹理和刀具反光逼真。

专注:太空算力、AI infra、异构调度、大模型成本工程 891

Mongodb设置数据过期自动删除

1.今天要做一个验证码一样的东西,让用户通过校验。 下面这段是设置以createTime为过期时间的索引,意思就是一条数据以其中createTime的字段时间为准,超过该字段时间将这条数据删除。 {expireAfterSeconds:0} 设置为0 时间一到立马删除。 { expireAfterSeconds: 60*2 } 设置延时秒,以设置的延时秒为准,到时间以设置的延时为基准删除数...

一个头发贼多的小火鸡 1667

ThingsBoard教程(十六):RPC部件的使用

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了十篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 ThingsBoard教程(七):模拟设备遥测 ThingsBoard教程(八):自定义UI T

知无涯 4580

mongodb设置自动过期

在业务场景中, 可能会碰到这种情况: 比如只需要保存最近一段时间的记录, 超过这个时限的数据就是无效的,可以进行删除操作,否则数据会越来越多。 最容易想到的一个办法, 是定时设置一个脚本去跑,将超过时间的数据删除。 对于mongodb,本身自带了这个功能, 能够设置过期的数据自动删除。怎么创建呢,其实是在创建索引的时候有一个options的选项,能够指定过期的时间db.collection.cre...

harleylau的博客 6463

uniapp [安卓苹果App端] - 实现判断并开启消息通知/提示权限,监测通知权限未开启时弹框提示用户并引导用户跳转至设置界面,uniApp检查通知权限+提示是否打开+点击跳转设置(详细示例代码)

uni-app判断有无通知权限,并进行设置,设置手机通知权限,开启通知权限,uni-app解决权限问题,uniapp 拉起授权(拒绝后重新开启权限)uniApp打包的手机app如果用户没开启通知权限、引导用户开启,uni-app动态打开应用通知权限,拒绝后跳转设置页面,uniapp获取通知栏权限,苹果ios系统打开通知权限,被拒绝怎么办,uniapp安卓判断通知权限,uniapp打包的APP引导用户打开手机通知权限,uniapp权限被拒绝,跳转手机设置页面 权限设置,IOS应用内跳转系统设置,uni-app

🏆 前端领域优质创作者 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mongodb设置过期时间

db.log_events.createIndex( { "expireTime": 1 }, ---字段名称 { expireAfterSeconds: 0 } ) ---过期时间(单位秒) mongdb存的时间是 db.log_events.insert( { "expireTime": new Date('Jan 22, 2019 23:00:00'), ---插入文档时指定自动删除时间 "logEvent": 2, "logMessa...

weixin_45168162的博客 1662

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

mongo 设置数据自动过期

一、设置数据过期索引; 官网说明:https://docs.mongodb.com/manual/tutorial/expire-data/ 创建过期索引: db.xxx.createIndex( { “expireAt”: 1 }, { expireAfterSeconds: 180 } ); 上述命令,以给 xxx 创建一个过期索引,在数据到达 expireAt 指定时间的 3 分钟后,数据...

征客 1888

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mongodb中集合中文档过期时间怎么设置?

MongoDB提供了TTL(Time To Live)索引功能,可以方便地设置文档的过期时间,实现数据的自动清理。一旦我们为集合创建了TTL索引并插入了带有过期时间的文档,MongoDB就会自动监控这些文档的过期时间。TTL索引是MongoDB中的一种特殊索引,它允许我们为集合中的文档设置一个过期时间。同样地,当我们更新文档时,也可以修改“expirationDate”字段的值来改变文档的过期时间。如果插入的文档不包含过期时间字段或该字段的值为null或不存在的日期,则TTL索引将不会生效。

qq_38341582的博客 884

java mongodb ttl_Mongodb设置TTL索引自动清除数据与过期数据的方法

Mongodb通常会被用来存储缓存数据或大尺寸、低价值的数据,对于这些类型的数据,数据量往往非常大,如果不定期清理,不但会影响性能,也会浪费大量的系统资源。Mongodb其实可以像Redis一样设置数据的过期时间,TTL索引是MongoDB中一种特殊的索引,可以支持文档在一定时间之后自动过期删除,目前TTL索引只能在单字段上建立。当你在集合中某一个字段建立TTL索引后,后台会有一个单线程,通过不断...

weixin_42520580的博客 1235

MongoDB---使用TTL索引自动删除过期数据

目录 一、前序 二、TTL索引介绍 三、TTL索引生效机制 四、创建TTL索引 五、修改TTL索引的expireAfterSeconds属性值 六、动态指定TTL索引的过期时间 七、TTL索引使用限制条件 八、验证TTL索引功能 一、前序 由于公司业务需求,对于1个月前的过期数据需要进行删除,以释放空间和方便维护。 本来想使用crontab写个脚本定时执行删除操作,但是看到Mongo本身就有自动删除过期数据的功能,就是使用TTL索引。决定使用TTL自动...

WorldMvp的专栏 4679

mongodb 设置过期自动删除记录

refs: https://docs.mongodb.com/manual/tutorial/expire-data/ mongodb所占空间越来越大,删除一些旧数据比较合理。发现有ttl功能,原本怀疑会有性能上的影响。 db.getCollection('DevLogCollection').createIndex( { "DateTime": 1 }, { expireAf...

Henry_Wu001的专栏 803

mongodb删除过期数据

通常,你往某一个mongo库中插数据,然后按日轮询,最终这个数据会越来越多,对于不用的数据需要进行清理。这篇文章主要将如何清理过期数据。 举个例子:你只需要最近2个月的数据,比如今天是20170829,那么60天之前的数据都可以清理掉。你可以写一个crontab任务,然后导入脚本,每天执行一次,将60天之前的所有数据进行删除。 假如你的collections为如下形式: test2017083

patkritLee的博客 2204

MongoDB设置字段过期时间TTL(Time To Live )索引以及修改过期时间

MongoDB可以通过设置字段TTL(Time To Live )索引来设置过期时间 1、如下所示,test是Collection,设置Date1的过期时间10秒,只要在插入的数据中包含Date1字段,插入数据后10秒之后会自动删除该条数据 //创建字段的TTL(Time To Live )索引 db.test.ensureIndex({'Date1':1},{expireAfterSeconds:10}) db.test.insertOne({'Date1':new Date(),'Nam.

LongtengGensSupreme博客 3064
上一篇: 利用Hive进行数据分析
下一篇: OpenTSDB 底层 HBase 的 Rowkey 是如何设计的
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值