MongoDB Capped集合 使用注意事项

作者: 持续进步者 | 来源:发表于2017-08-13 09:08 被阅读88次

Capped集合简介

  • 1,Capped集合是一个固定大小,高性能的,文档按照插入顺序的一个集合。
    新的对象会把覆盖旧的对象,像环形缓存一样。

  • 2,find时默认就是插入的顺序,Capped集合会自动维护。

  • 3,Capped 集合用来解决top 多少的问题,最新的top条评论,最活跃的top用户...

Capped集合创建语法

db.createCollection("集合名称", { capped : true, size : num, max : num } )

db.createCollection("log", { capped : true, size : 1000, max : 5 } )
  • 1, size用来指定集合大小,单位KB。

  • 2, 限制集合中对象的个数:可以在创建时设置max参数。

  • 3, 指定mac数量的时候必须同时指定size容量。淘汰机制只有在容量还没有满时才会依据文档数量工作。
    要是容量满了,淘汰机制会依据容量来工作。

db.log.insert({"name":"u1"})
db.log.insert({"name":"u2"})
db.log.insert({"name":"u3"})
db.log.insert({"name":"u4"})
db.log.insert({"name":"u5"})
db.log.find()
{ "_id" : ObjectId("598d6cacde67b24068234115"), "name" : "u1" }
{ "_id" : ObjectId("598d6cb0de67b24068234116"), "name" : "u2" }
{ "_id" : ObjectId("598d6cb4de67b24068234117"), "name" : "u3" }
{ "_id" : ObjectId("598d6cb8de67b24068234118"), "name" : "u4" }
{ "_id" : ObjectId("598d6cbcde67b24068234119"), "name" : "u5" }

//再插入一个数据 将会覆盖掉第一条数据
db.log.insert({"name":"u6"})
db.log.find()
{ "_id" : ObjectId("598d6cb0de67b24068234116"), "name" : "u2" }
{ "_id" : ObjectId("598d6cb4de67b24068234117"), "name" : "u3" }
{ "_id" : ObjectId("598d6cb8de67b24068234118"), "name" : "u4" }
{ "_id" : ObjectId("598d6cbcde67b24068234119"), "name" : "u5" }
{ "_id" : ObjectId("598d8faede67b2406823411a"), "name" : "u6" }


查看一个集合是不是Capped集合

db.collection.isCapped()
    db.log.isCapped()
    true  //false 不是Capped集合

查看Capped集合状态

 db.log.stats()
{
    "ns" : "leyue.log",
    "count" : 4,
    "size" : 140,
    "avgObjSize" : 35,
    "storageSize" : 36864,
    "capped" : true,
    "max" : 5,
    "maxSize" : 1024,
    "sleepCount" : 0,
    "sleepMS" : 0,
    ....
}
  • 1, max: Capped集合最多可以有多少条数据

  • 2, maxSize:Capped集合最多可以有多少字节

把一个集合转换成Capped集合,反之不行

db.runCommand({"convertToCapped": "要转换的集合", size: 100000});
db.runCommand({"convertToCapped": "mycoll", size: 100000}); 

注意事项

  • 1,32位机器上,一个Capped集合的最大值约为482.5M,64位只受系统文件大小的限制,
    创建的时候,可以预指定大小。

  • 2,可以向Capped 集合中加入数据,但不能删除数据,也不能改变集合大小。

  • 3,可以使用drop 方法删除集合,删除后,需显示的重新创建这个集合。

    db.log.drop()
    true
    
    db.createCollection("log", { capped : true, size : 1000, max : 5 } )
    { "ok" : 1 }

固定集合属性及用法

属性

  • 属性1:对固定集合进行插入速度极快
  • 属性2:按照插入顺序的查询输出速度极快

  • 属性3:能够在插入最新数据时,淘汰最早的数据

用法

  • 用法1:储存日志信息

  • 用法2:缓存一些少量的文档

相关文章

  • MongoDB Capped集合 使用注意事项

    Capped集合简介 1,Capped集合是一个固定大小,高性能的,文档按照插入顺序的一个集合。新的对象会把覆盖旧...

  • 5 MongoDB集合操作

    创建集合 name,集合名 options,可选参数(1) capped 布尔型(可选)若为true,则创建固定集...

  • mongodb之(6)mongodb集合与索引

    1、集合 1.1、创建集合 MongoDB 中使用 createCollection() 方法来创建集合。 语法格...

  • mongo增删该查

    MongoDB 插入文档MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:...

  • MongoDB基本语法(2)

    show users //查看所有权限用户 一、删除集合 二、MongoDB 插入文档 MongoDB 使用...

  • 基于mongodb oplog的一点思考

    什么是oplog capped collection: 一个固定大小的集合, 当集合大小达到最大值时,老的内容会被...

  • MongoDB学习(二)

    MongoDB 更新文档 MongoDB 使用update()和save()方法来更新集合中的文档。 update...

  • MongoDb-数组的应用实践

    本文讨论MongoDB中数组使用的相关注意事项,默认读者对MongoDB中数组的概念和使用场景有一定了解。文章中将...

  • 21.mongodb的简单使用

    mongodb的简单使用 学习目标 掌握 服务端的启动 掌握 客户端的使用 掌握 mongodb的数据库和集合命令...

  • MongoDB常用命令

    创建/删除数据库 创建/删除集合 插入文档 MongoDB 使用 insert() 或 save() 方法向集合中...

网友评论

    本文标题:MongoDB Capped集合 使用注意事项

    本文链接:https://www.haomeiwen.com/subject/xrmsrxtx.html