MongoDB的固定集合

  一、MongoDB固定集合概念

    固定集合指的是事先创建,并且大小固定的集合。即假设一个集合设置了固定大小为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据。

    固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景。

  二、固定集合应用场景

    比如日志文件,聊天记录,通话信息记录等只需保留最近某段时间内的应用场景,都会使用到MongoDB的固定集合。

  三、如何使用固定集合

    创建固定集合使用命令:db.createCollection("集合名词",{capped:true,size:1000,max:100});

    capped:true表示该集合为固定集合,size指定集合大小,单位为KB,max指定文档的数量

    当指定文档数量上限时,必须同时指定大小。这是为什么呢?

    答案是:淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制会依据容量来工作。 

    结合场景来理解:

    (1)现创建一个c5的固定集合,大小设置为1000kb,文档数量设置为100,编写命令:db.createCollection("c5",{capped:true,size:1000,max:100}); 

    (2)并向集合中插入10条数据:    

        for(var i=0,i<=99;i++){
             db.c5.insert({name:"fuck",age:i})
        }

    (3)查找c5集合的大小:db.c5.count(),却发现实际显示的数量只有56条。

     结论:当存储的数据达到集合大小的上限时,淘汰机制依据容量来工作,通过不断的淘汰前面插入的数据,来满足后面所有数据的插入,所以根据下图可得,c5检索出来的结果,是从age:43开始的。

    

    再来看一个场景   

    (1)现创建一个c8的固定集合,大小设置为10000kb,文档数量设置为100,编写命令:db.createCollection("c8",{capped:true,size:10000,max:100});,条件与上个场景差不多,只是大小调整为10000kb

    (2)并向集合中插入100条数据:    

        for(var i=0,i<100;i++){
             db.c8.insert({name:"fuck",age:i})
        }

    (3)再查找c8集合的大小:db.c8.count(),这回的数量达到了预期的100条    

    (4)这时再插入一条数据,也能插入成功,但是再find一把,会发现第一条数据被干掉了

     结论:淘汰机制在容量未满的情况下,会对前面的文档进行淘汰,后面插入多少条数据,则最前面相应的淘汰多少条。

     

时间: 2024-08-02 11:00:48

MongoDB的固定集合的相关文章

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

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

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

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

MongoDB 进阶(命令\固定集合)

命令参考 查看MongoDB命令方法 ● 在shell中运行db.listCommands()命令 ● 在浏览器管理接口http://localhost:28017/_commands 下面是MongoDB最常使用的命令: ●  buildinfo 管理专用命令,返回MongoDB服务器的版本号和主机操作系统信息 >db.runCommand({"buildinfo":1}) { "version" :"2.4.14", "git

3、MongoDB学习之固定集合

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

MongoDB固定集合(Capped Collections)

MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! 1. 创建固定集合: db.createCollection("cappedLogCollection",{capped:true,size:10000}) 指定文档个数: db.createCollection("cappedLogCollection",{capp

mongodb固定集合,建立管理员安全验证

建立普通集合 db.createCollections aaa; 建立固定集合名称book capped true 固定集合 size大小 max:文档数量 db.createCollection("book",{capped:true,size:10000,max:5}) "capped" : false, 表示普通集合 普通集合可以转换为固定集合      db.user.convertToCapped(maxBytes) - calls {convertToC

MongoDB固定集合

固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! 特点:可以插入及更新,但更新不能超出collection的大小,否则更新失败,不允许删除,但是可以调用drop()删除集合中的所有行,但是drop后需要显式地重建集合. 回到顶部 示例 > db.createCollection(, {capped:, size:, max: : >&

MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本

介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询. >db.runCommand({"drop":"test"}) 上面的命令等价于下面的查询: >db.$cmd.findOne({"d

MongoDB 固定集合(Capped Collections)

MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! 创建固定集合 我们通过createCollection来创建一个固定集合,且capped选项设置为true: >db.createCollection("cappedLogCollection",{capped:true,size:10000}) 还可以指定文档个数,加上max:1