一 简介:本文介绍创建自动删除数据的TTL索引

二 目的 定时删除数据
三 创建方法
   db.collection.createIndex(keys, options)
   options:
   expireAfterSeconds 指定多少秒或者包含日期值的数组

创建示例
   db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 },{backgroup: true})

四 何时失效
   1 在指定的时间达到后失效,也即是索引字段的值加上一个特定的秒数之后
   2 如果索引字段是一个数组,即索引字段上存在着多个日期值,此时MongoDB取最小值加上失效时间(lowest())
   3  对于非日期字段或不包含日期数组的索引字段,文档不会失效
   4  对于不包含索引字段的文档,文档不会失效

五 删除操作
   1 mongod的一个后台线程会读取索引的值并将失效的文档从集合移除
   2 当TTL线程被激活后,可以从db.currentOp()或者从profile观察到删除操作

六 何时删除
   1 当基于后台方式创建索引时,TTL线程能够在索引创建期间开始删除失效文档
   2 当基于前台方式创建索引时,TTL线程在索引创建完成后开始删除失效文档 
   3 TTL索引的删除不能完全保证失效期后一定删除,存在一定延迟(取决于mongod的工作负载)
   4 TTL删除文档后台线程每60s移除失效文档(因此可能存在已过失效期,文档还在的情形)
   5  在副本集环境中,TTL后台线程仅仅在主副本上工作,辅助副本上由复制操作实现
   6  在使用TTL索引查询时,与使用非TTL索引一样

七 一些限制
   1 不能基于已经存在索引的字段创建TTL索引以及非日期字段创建TTL索引,文档不会失效
   2 TTL索引不支持基于多个字段的复合索引
   3 不支持定长集合
本文系转载文章来源 https://blog.csdn.net/leshami/article/details/61195427

mongodb定时删除数据(索引删除)的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   ...

  2. MVC3.0删除数据的时候给提示信息

    Index.cshtml代码: @model IEnumerable<FirstMvc.Models.Book> <script type="text/javascript ...

  3. 6-05使用SQL语句删除数据

    删除数据语法: DELETE  FROM 表名  WHERE  删除条件. TRUNCATE  TABLE 表名. --[1]基本删除,省略WHERE条件,将删除表中的所有数据 DELETE FROM ...

  4. net下 Mysql Linq的使用, 更新数据,增加数据,删除数据

    net下访问mysql主要有2种方法: 1.字符串拼接访问 a.mysql官网下载并安装mysql-connector-net. b项目中引用mysql.data等 所有增删改查可以通过拼接sql语句 ...

  5. MySQL插入、更新、删除数据

    1.插入数据:由于下表的id会自增,故赋值null. 注意:字符串用'   '单引号,不能双引号,英文状态下. 可以写上部分属性名进行插入操作,如bookTypeId没写,默认NULL. 也可以写上所 ...

  6. SQLServer删除数据列

    删除数据列 开发或者生产过程中多建.错误或者重复的数据列需要进行删除操作. 使用SSMS数据库管理工具删除数据列 方式一 1.打开数据库->选择数据表->展开数据表->展开数据列-& ...

  7. mysql——插入、更新、删除数据(示例)

    插入数据 一.前提,新建表: ), sname ), sage ), ssex ) ); select * from student; 二.多种方式插入数据: ','zhaolei','1990-01 ...

  8. mysql——插入、更新、删除数据(概念)

    一.插入数据 1.为表的所有字段插入数据 -------------------------------------------------------------------------- (1)i ...

  9. Python全栈 MongoDB 数据库(数据的修改)

    修改操作符的使用   $set 修改一个域的值,增加一个域   阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}})   如果sex域不存在则 ...

随机推荐

  1. django搭建BBS-表单创建&注册

    django搭建BBS-表单创建&注册 0824自我总结 文件结构 app 接口 migrations __inint__.py admin.py 管理员页面注册表单用 apps.py bbs ...

  2. 支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)

    上篇文章<支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)>介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建.配置,运维.扩容等具体操作 集群搭建 ...

  3. iOS开发请您把握现在 — 面向未来学习

    iOS开发请您把握现在 — 面向未来学习 这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有彩蛋 群里常见的唱哀 iOS现在到底 ...

  4. 使用WSL中开发调试.NET Core

    安装WSL 1.打开WINDOWS功能,勾选子系统选项 2.打开商店搜索WSL,安装ubuntu 我这里的系统版本是:18.04 如何查看ubuntu系统版本 sudo lsb_release -a ...

  5. 【RabbitMQ 实战指南】一 死信队列

    1.死信队列 DLX,全称为 Dead-Letter-Exchange,可以称之为死信交换器.当消息在一个队列中变成死信(dead message)之后,它能被发送到另一个交换器中,这个交换器就是DL ...

  6. java学习6-java基础类库

    1.与用户互动 2.系统相关 3.常用类 4.日期.时间类

  7. 1,下载和部署开发环境--AutoCAD二次开发

    环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...

  8. 百万年薪python之路 -- 内置函数练习

    1.整理今天笔记,课上代码最少敲3遍. 2.用列表推导式做下列小题 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 lst = [["a","b"],[ ...

  9. Jetcache

    转存 Jetcache https://github.com/alibaba/jetcache/wiki/GettingStarted_CN

  10. 远程桌面连接(mstsc)

    目录 1. 序言 2. 准备工作 3. 内网远程连接(以mstsc的方式) 4. 问题---凭据不工作 5. 外网远程连接(mstsc) 6. 结语 更新时间:2019.09.10 1. 序言 有时候 ...