MongoDB-固定集合 capped collection 操作 介绍

固定集合:capped collection 是性能出色的固定大小的集合,以LRU算法淘汰记录,自助维护集合中的对象的插入顺序,创建时预先制定大小,空间使用完,心对象取代旧的对象,保持最新的数据。

 可以插入及更新,但更新不能超出 

collection 的大小,否则更新失败。不允许删除,但是可 以调用 drop() 删除集合中的所有行,但是drop 后需要显式地重建集合。在 32 位机上,一 个 capped collection 的最大值约为 482.5M,64 位上只受系统文件大小的限制。

属性以及用法:

属性:1、对固定集合插入速度极快。

           2、按照插入顺序的查询输出速度极快。

           3、能够在插入最新时候淘汰最早的数据。

用法:1、储存日志信息。

   2、储存少量的文档。

使用

 1、可以在创建 capped collection 时指定 collection 中能够存放的最大文档数。但这时也要指
定 size, 因为总是先检查 size 后检查 maxRowNumber。 可以使用 validate()查看一个 collection 已经使用了多少空间,从而决定size 设为多大。如:

db.createCollection("mycoll", {capped:true, size:100000, max:100});  //100000表示字节

 

注意:指定文档上限,必须指定大小,文档限制是在容量没满时进行淘汰,要是满了,就根据容量限制来进行淘汰。

> db.createCollection("mycol",{capped:true,size:100000,max:100})

{ "ok" : 1 }

> db.mycol.val

db.mycol.validate(  db.mycol.valueOf(

> db.mycol.validate()          //用来查看固定集合的使用情况

{

    "ns" : "admin.mycol",

    "capped" : true,

    "max" : 100,

    "firstExtent" : "0:8c000 ns:admin.mycol",

    "lastExtent" : "0:8c000 ns:admin.mycol",

    "extentCount" : 1,

    "datasize" : 0,

    "nrecords" : 0,

    "lastExtentSize" : 102400,

    "padding" : 1,

    "firstExtentDetails" : {

        "loc" : "0:8c000",

        "xnext" : "null",

        "xprev" : "null",

        "nsdiag" : "admin.mycol",

        "size" : 102400,

        "firstRecord" : "null",

        "lastRecord" : "null"

    },

    "deletedCount" : 2,

    "deletedSize" : 102224,

    "nIndexes" : 1,

    "keysPerIndex" : {

        "admin.mycol.$_id_" : 0

    },

    "valid" : true,

    "errors" : [ ],

    "warning" : "Some checks omitted for speed. use {full:true} option to do more thorough scan.",

    "ok" : 1

}

> db.createCollection("mycol",{capped:true,size:100000,max:100,autoIndexId:false})

//创建collection时还有一个参数”autoIndexID”,值可以为”true”和”false”,决定是否需要在”_id”上创建索引



{ "ok" : 0, "errmsg" : "collection already exists" } > db.mycol.drop() true > db.createCollection("mycol",{capped:true,size:100000,max:100,autoIndexId:false}) { "ok" : 1 } >

2、转换集合   把test普遍集合转换为固定集合,大小为10000字节.

db.runCommand( { convertTocapped:"test",size:10000 } );

 3、自然排序

固定集合文档按照插入顺序储存的,默认情况下查询就是按照插入顺序返回的,也可以使用$natural调整返回顺序.

db.mycappedcolt.find().sort( {"$natural":1} );

参数1表示默认顺序,-1则相反.

4、判断集合是否为固定集合

db.colt.isCapped();

5、查看集合状态信息

db.colt.stats();

 

你可能感兴趣的:(Collection)