【MongoDB】TTL固定时间集合

TTL索引(time to live index,具有生命周期的索引),这种索引允许为每一个文档设置一个超时时间。一个文档到达预设置的老化程度之后就会被删除。这种类型的索引对于缓存问题(比如会话的保存)非常有用。

在创建索引的时候,顺便指定expireAfterSeconds选项就可以创建一个TTL索引,该集合也就属于TTL集合了。

// 创建TTL索引, 设置超时时间为24小时
db.ttl.ensureIndex({date:1},{expireAfterSeconds:24*60*60});

这样就在"date"字段上创建了一个TTL索引。如果一个文档的"date"存在并且它的值是日期类型,当服务器时间比文档的"date"字段的时间晚expireAfterSeconds秒时,文档就会被删除。

为了防止活跃的会话被删除,可以在会话上有活动发生时将"date"字段更新为当前时间。只要"date"距离当前时间达到24小时,文档就会被删除。

MongoDB每分钟对TTL索引进行一次清理,所以不应该依赖以秒为单位的时间来保证索引的存活状态。可以使用collMod命令来更改expireAfterSeconds的值:

db.runCommand(
    {
        collMod:"ttl",
        index:{
            keyPattern:{date:1}, 
            expireAfterSeconds:3600
        }
     }
)

在一个给定的集合上可以有多个TTL索引。TTL索引不能是复合索引,但是可以像普通索引一样用来优化排序和查询。

时间: 2024-07-30 07:24:53

【MongoDB】TTL固定时间集合的相关文章

MongoDB的固定集合

一.MongoDB固定集合概念 固定集合指的是事先创建,并且大小固定的集合.即假设一个集合设置了固定大小为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据. 固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属性的场景. 二.固定集合应用场景 比如日志文件,聊天记录,通话信息记录等只需保留最近某段时间内的应用场景,都会使用到MongoDB的固定集合. 三.如何使用固定集合 创建固定集合

【MongoDB学习笔记26】MongoDB的固定集合

MongoDB中的普通集合是动态的,可以自动增长容纳更多的数据:相对而言,有另一种集合称之为固定集合. (1)固定集合需要实现显式创建,集合大小固定: (2)一旦固定集合中空间用完,插入的新文档将覆盖最老的那个文档的空间,类似循环队列: (3)固定集合不能被分片: (4)固定集合不能修改,只能删除重建 一.创建固定集合 使用CreateCollection创建固定集合myCollection,字节大小限制在10000,文档数量限制在100: > db.createCollection("m

C#固定时间执行指定事件(观察者模式+异步委托)

最近有个项目需要每天固定的时间去执行指定的事件,发现网上关于这样的文章比较少,而且比较散.通过学习了几篇文章后终于实现了这个功能,在此也特别感谢这些文章的作者们,这也是我第一次在园子里面发文章,望多指教. 关于观察者模式,我在这里就不做讲解了,如有不懂,可以参考相关文章. 那么开始入正题. 主要有三个页面:Observer.cs(观察者).Subject.cs(通知者).Form1.cs Observer.cs class Observer { /// <summary> /// 执行事件A

JavaScript 倒计时(截止某日期的倒计时和截止每晚12点的倒计时以及固定时间倒计时)

截止某日期的倒计时和截止每晚12点倒计时: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> </head> <body> <h1 id="divTime"></h1> </body> <script type="text/javascript&qu

mongodb的固定集合(优化效率)

mongodb固定集合(Capped Collection)和大文件管理(GridFS) Capped Collection 固定集合(Capped Collection)是性能出色的有着固定大小的集合,以LRU(Least Recently Used最近最少使用)规则和插入顺序进行age-out(老化移出)处理,自动维护集合中对象的插入顺序,在创建时要预先制定大小,如果空间用完,新添 加的对象将会取代集合中最旧的对象,永远保持最新的数据. 查看集合的状态信息 db.cot1.stats();

Mongodb 特殊索引和集合

固定集合(适用于记录日志) 固定集合需要事先创建好,而且它的大小是固定的.当固定集合被占满时,如果再插入新文档,固定集合会自动将最老的文档从集合中删除. 固定集合的文档数量不能超过文档数量限制,固定集合的大小也不能超过大小限制.已首先到达限制为准. 创建固定集合 db.createCollection(" my_collection", {" capped" : true, "size" : 100000,'max':100}); capped

MongoDB的数据库、集合的基本操作

数据库的基本操作 一.创建数据库 1 use 数据库的名称 这样就创建了一个数据库 2 3 use命令:如果当前数据库存在就会切换到数据库,没有就会创建. 4 5 注意:此时在MongoDB中没有真正的创建数据库,直到数据库有数据的时候才会创建数据库. 现在use student数据库,再查的时候没有创建: 当我们向数据库插入数据或创建集合的时候才会真正的创建,一句好只要数据库有内容才会被真正的创建. 这和Mysql不一样,Mysql只要创建数据库,这个数据库就会存在,不管里面有没有内容: 二.

MongoDB基础--数据库和集合基本操作

本笔记针对https://www.shiyanlou.com/courses/running/50 网站对mongoDB的学习和总结. 1,启动mongoDB 因为mongoDB服务并不随着系统一起启动,所以需要首先启动mongoDB服务: shiyanlou:~/ $ sudo service mongodb start 2,数据库简介 一个MongoDB可以创建多个数据库. 使用 show dbs可以查看所有数据库的列表 执行db命令则可以查看当前数据库对象或者集合. 运行use命令则可以连

MongoDB文档、集合、数据库简介

文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个有序集.MongoDB使用Javascript shell,文档的表示一般使用Javascript里面的对象的样式来标记,如下: 1 {"title":"hello!"} 2 {"title":"hello!","recommend":5} 3 {"title&quo