一、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一把,会发现第一条数据被干掉了

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

     

MongoDB的固定集合的更多相关文章

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

    mongodb固定集合(Capped Collection)和大文件管理(GridFS)   Capped Collection   固定集合(Capped Collection)是性能出色的有着固定 ...

  2. MongoDB使用固定集合

    MongoDB中的固定集合:大小是固定的,类似于循环队列,如果没有空间了,最老的文档会被删除以释放空间,新插入的会占据这块空间. 1.固定集合(oplog) oplog是一个典型的固定集合,因为其大小 ...

  3. MongoDB固定集合(capped collection)

    一 . 什么是固定集合 MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection). 固定集合可以声明collection的容量大小,其行为类似于循环 ...

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

    介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...

  5. MongoDB的学习和使用(固定集合[Capped Collections])

    MongoDB 固定集合(Capped Collections) MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环 ...

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

    建立普通集合 db.createCollections aaa; 建立固定集合名称book capped true 固定集合 size大小 max:文档数量 db.createCollection(& ...

  7. MongoDB固定集合

    固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头 ...

  8. MongoDB固定集合(Capped Collections)

    MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...

  9. MongoDB 固定集合

    MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...

随机推荐

  1. 多个 label checkbox 组合 显示在同一个水平线上[前提Bootstrap框架]

    <th align="left" valign="middle"> <label class="checkbox inline fo ...

  2. datagrid.celltips.js

    /** * Created with JetBrains WebStorm. * User: cao.guanghui * Date: 13-6-26 * Time: 下午11:27 * To cha ...

  3. 织梦dede模板中广告的去除方法?

    织梦)dede模板中广告的去除方法1.我们先删除头部的广告,找到templetsdefault下的head.htm文件,打开后找到<div>{dede:myad name=’innerTo ...

  4. annexb模式

    h264有两种封装,一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中一种是mp4模式,一般mp4 mkv会有,没有startcode,SPS和PPS以及其它信息被封装在 ...

  5. Frameset 两页面互调控件技术案例

    总共包含三个页面(Html),分别为Parent.Html.ChildA.Html.ChildB.Html Parent.Html页面代码 <frameset cols="50%,*& ...

  6. MyBatis 3.2.6插入时候获取自增主键方法

    MyBatis 3.2.6插入时候获取自增主键方法有二 以MySQL5.5为例: 方法1: <insert id="insert" parameterType="P ...

  7. Js 的几种去重(一维)

    写的几种数组去重方法: 第一种: [利用排序方法,然后比较当前元素与下一个元素是否相等] function repeat1(arr) { var length = arr.length; var re ...

  8. VS2013新特性

    大家可能看到我这边颜色和字体和原本不同,这里特意分享给大家背景护眼色值(这对每天看电脑的程序员很重要对不对!)还有字体: 工具-选项-字体和颜色:在项背景点击自定义-色调85 饱和度123 亮度205 ...

  9. TClientDataSet数据源设置

    TClientDataSet数据源设置   TClientDataSet数据源设置

  10. Code Forces 26C Dijkstra?

    C. Dijkstra? time limit per test 1 second memory limit per test 64 megabytes input standard input ou ...