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();

 

原文地址:https://www.cnblogs.com/timelesszhuang/p/4351875.html