您的位置:首页 > 数据库 > Mongodb

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

2015-03-19 21:44 435 查看
固定集合: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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: