目录

固定集合( capped collection)

固定集合操作

集合大小单独约束

大小与数理同时约束


固定集合( capped collection)

固定集合指的是事先创建而且大小固定的集合 。

固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。

固定集合使用场景:比如通话记录,聊天记录 等,只保存一定大小的历史记录,过期的则会进行删除!

固定集合创建命令:db.createCollection(“collectionName”,{capped:true,size:100000,max:100});  size 指定集合存储大小,单位为 KB,max 指定文档的数量

当指定文档数量上限时,必须同时指定大小。淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制会依据容量来工作。

固定集合操作

固定集合创建命令:db.createCollection(“collectionName”,{capped:true,size:100000,max:100});

capped:是否固定、size:指定集合大小,单位为KB、max 指定文档的数量

固定集合创建命令其实也就是在显示创建集合命令基础上带了后面的 花括号参数而已,可以参考《 MongoDB 数据库_集合_文档 操作》

集合大小单独约束

如下所示 db.createCollection("capped1",{capped:true,size:1024}):当只指定了固定集合的存储大小时,只根据大小进行淘汰,当集合大小超过 1024 KB 时,淘汰旧值,添加新值——推陈出新!

如下所示当连续添加 100 条时,因为集合大小超过了 1M,所以前面添加的旧文档被删除了,只留下了最新的 18 条。

> db
mydb2
> show collections
c1
> db.createCollection("capped1",{capped:true,size:1024})
{ "ok" : 1 }
> for(var i=0;i<=100;i++){
... db.capped1.insert({name:"zhangSan",age:i});
... }
WriteResult({ "nInserted" : 1 })
> db.capped1.find().count()
18
> db.capped1.find()
{ "_id" : ObjectId("5b98a3d4496484420f387dab"), "name" : "zhangSan", "age" : 83 }
{ "_id" : ObjectId("5b98a3d4496484420f387dac"), "name" : "zhangSan", "age" : 84 }
{ "_id" : ObjectId("5b98a3d4496484420f387dad"), "name" : "zhangSan", "age" : 85 }
{ "_id" : ObjectId("5b98a3d4496484420f387dae"), "name" : "zhangSan", "age" : 86 }
{ "_id" : ObjectId("5b98a3d4496484420f387daf"), "name" : "zhangSan", "age" : 87 }
{ "_id" : ObjectId("5b98a3d4496484420f387db0"), "name" : "zhangSan", "age" : 88 }
{ "_id" : ObjectId("5b98a3d4496484420f387db1"), "name" : "zhangSan", "age" : 89 }
{ "_id" : ObjectId("5b98a3d4496484420f387db2"), "name" : "zhangSan", "age" : 90 }
{ "_id" : ObjectId("5b98a3d4496484420f387db3"), "name" : "zhangSan", "age" : 91 }
{ "_id" : ObjectId("5b98a3d4496484420f387db4"), "name" : "zhangSan", "age" : 92 }
{ "_id" : ObjectId("5b98a3d4496484420f387db5"), "name" : "zhangSan", "age" : 93 }
{ "_id" : ObjectId("5b98a3d4496484420f387db6"), "name" : "zhangSan", "age" : 94 }
{ "_id" : ObjectId("5b98a3d4496484420f387db7"), "name" : "zhangSan", "age" : 95 }
{ "_id" : ObjectId("5b98a3d4496484420f387db8"), "name" : "zhangSan", "age" : 96 }
{ "_id" : ObjectId("5b98a3d4496484420f387db9"), "name" : "zhangSan", "age" : 97 }
{ "_id" : ObjectId("5b98a3d4496484420f387dba"), "name" : "zhangSan", "age" : 98 }
{ "_id" : ObjectId("5b98a3d4496484420f387dbb"), "name" : "zhangSan", "age" : 99 }
{ "_id" : ObjectId("5b98a3d4496484420f387dbc"), "name" : "zhangSan", "age" : 100 }
>

大小与数理同时约束

当指定文档数量上限时,必须同时指定集合存储大小。

淘汰机制是:集合大小未超过时,则根据文档个数进行约束;集合大小超过时,则根据集合大小进行约束

如下所示 db.createCollection("capped2",{capped:true,size:10240,max:100}):创建固定集合 capped2,其集合存储大小为 10 M,文档个数上限为 100 个

当一次性添加 100 个文档之后,因为 集合存储大小未超过 10 M,所以 100 个文档全部添加成功,当之后再次添加时文档时,因为超过 100 个文档个数的上限,所以第一条旧文档开始被删除,以此类推。

> db.createCollection("capped2",{capped:true,size:10240,max:100})
{ "ok" : 1 }
> for(var i=1;i<=100;i++){
... db.capped2.insert({name:"liSi",age:i});
... }
WriteResult({ "nInserted" : 1 })
> db.capped2.find().count()
100
> db.capped2.find()
{ "_id" : ObjectId("5b98a707496484420f387dbd"), "name" : "liSi", "age" : 1 }
{ "_id" : ObjectId("5b98a707496484420f387dbe"), "name" : "liSi", "age" : 2 }
{ "_id" : ObjectId("5b98a707496484420f387dbf"), "name" : "liSi", "age" : 3 }
{ "_id" : ObjectId("5b98a707496484420f387dc0"), "name" : "liSi", "age" : 4 }
{ "_id" : ObjectId("5b98a707496484420f387dc1"), "name" : "liSi", "age" : 5 }
{ "_id" : ObjectId("5b98a707496484420f387dc2"), "name" : "liSi", "age" : 6 }
{ "_id" : ObjectId("5b98a707496484420f387dc3"), "name" : "liSi", "age" : 7 }
{ "_id" : ObjectId("5b98a707496484420f387dc4"), "name" : "liSi", "age" : 8 }
{ "_id" : ObjectId("5b98a707496484420f387dc5"), "name" : "liSi", "age" : 9 }
{ "_id" : ObjectId("5b98a707496484420f387dc6"), "name" : "liSi", "age" : 10 }
{ "_id" : ObjectId("5b98a707496484420f387dc7"), "name" : "liSi", "age" : 11 }
{ "_id" : ObjectId("5b98a707496484420f387dc8"), "name" : "liSi", "age" : 12 }
{ "_id" : ObjectId("5b98a707496484420f387dc9"), "name" : "liSi", "age" : 13 }
{ "_id" : ObjectId("5b98a707496484420f387dca"), "name" : "liSi", "age" : 14 }
{ "_id" : ObjectId("5b98a707496484420f387dcb"), "name" : "liSi", "age" : 15 }
{ "_id" : ObjectId("5b98a707496484420f387dcc"), "name" : "liSi", "age" : 16 }
{ "_id" : ObjectId("5b98a707496484420f387dcd"), "name" : "liSi", "age" : 17 }
{ "_id" : ObjectId("5b98a707496484420f387dce"), "name" : "liSi", "age" : 18 }
{ "_id" : ObjectId("5b98a707496484420f387dcf"), "name" : "liSi", "age" : 19 }
{ "_id" : ObjectId("5b98a707496484420f387dd0"), "name" : "liSi", "age" : 20 }
Type "it" for more
> db.capped2.insert({name:"wangWu",age:25})
WriteResult({ "nInserted" : 1 })
> db.capped2.find().count()
100
> db.capped2.find()
{ "_id" : ObjectId("5b98a707496484420f387dbe"), "name" : "liSi", "age" : 2 }
{ "_id" : ObjectId("5b98a707496484420f387dbf"), "name" : "liSi", "age" : 3 }
{ "_id" : ObjectId("5b98a707496484420f387dc0"), "name" : "liSi", "age" : 4 }
{ "_id" : ObjectId("5b98a707496484420f387dc1"), "name" : "liSi", "age" : 5 }
{ "_id" : ObjectId("5b98a707496484420f387dc2"), "name" : "liSi", "age" : 6 }
{ "_id" : ObjectId("5b98a707496484420f387dc3"), "name" : "liSi", "age" : 7 }
{ "_id" : ObjectId("5b98a707496484420f387dc4"), "name" : "liSi", "age" : 8 }
{ "_id" : ObjectId("5b98a707496484420f387dc5"), "name" : "liSi", "age" : 9 }
{ "_id" : ObjectId("5b98a707496484420f387dc6"), "name" : "liSi", "age" : 10 }
{ "_id" : ObjectId("5b98a707496484420f387dc7"), "name" : "liSi", "age" : 11 }
{ "_id" : ObjectId("5b98a707496484420f387dc8"), "name" : "liSi", "age" : 12 }
{ "_id" : ObjectId("5b98a707496484420f387dc9"), "name" : "liSi", "age" : 13 }
{ "_id" : ObjectId("5b98a707496484420f387dca"), "name" : "liSi", "age" : 14 }
{ "_id" : ObjectId("5b98a707496484420f387dcb"), "name" : "liSi", "age" : 15 }
{ "_id" : ObjectId("5b98a707496484420f387dcc"), "name" : "liSi", "age" : 16 }
{ "_id" : ObjectId("5b98a707496484420f387dcd"), "name" : "liSi", "age" : 17 }
{ "_id" : ObjectId("5b98a707496484420f387dce"), "name" : "liSi", "age" : 18 }
{ "_id" : ObjectId("5b98a707496484420f387dcf"), "name" : "liSi", "age" : 19 }
{ "_id" : ObjectId("5b98a707496484420f387dd0"), "name" : "liSi", "age" : 20 }
{ "_id" : ObjectId("5b98a707496484420f387dd1"), "name" : "liSi", "age" : 21 }
Type "it" for more
>

MongoDB 固定集合详解相关推荐

  1. MongoDB 教程五: MongoDB固定集合和性能优化 (索引Indexes, 优化器, 慢查询profile)

    mongodb索引详解(Indexes) 索引介绍 索引在mongodb中被支持,如果没有索引,mongodb必须扫描每一个文档集合选择匹配的查询记录.这样扫描集合效率并不高,因为它需要mongod进 ...

  2. java list取值_Java集合详解

    一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...

  3. Java集合详解之Map

    一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...

  4. 使用VS2010编译MongoDB C++驱动详解

    最近为了解决IM消息记录的高速度写入.多文档类型支持的需求,决定使用MongoDB来解决. 考虑到MongoDB对VS版本要求较高,与我现有的VS版本不兼容,在leveldb.ssdb.redis.h ...

  5. 1.8 Collections类操作集合详解——排序,查找,复制

    Collections类操作集合详解 Collections 类是 Java 提供的一个操作 Set.List 和 Map 等集合的工具类. Collections 类提供了许多操作集合的静态方法,借 ...

  6. Mongodb固定集合

    2019独角兽企业重金招聘Python工程师标准>>> Mongodb固定集合 博客分类: java mongodb Capped Collection(固定集合) 简单介绍 cap ...

  7. php打印出函数的内容吗,PHP打印函数集合详解以及PHP打印函数对比详解(精)

    1 echo();2 print();3 die();4 printf();5 sprintf();6 print_r();7 var_dump(); 1 echo() 可以同时输出多个字符串,可以多 ...

  8. MongoDB 教程五: MongoDB固定集合和性能优化

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

  9. 集合 (二) ----- Map集合详解

    相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 Map集合详解 一.Map集合基 ...

  10. 集合 (一) ----- 集合的基本概念与Collection集合详解

    相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 集合的基本概念 一.集合的分类 ...

最新文章

  1. git bash打印当前文件结构_6 个方便的 Git 脚本
  2. nltk自然语言处理
  3. 画出18*18的棋盘以及用不同颜色绘制出同心圆(python实现)
  4. java 脚手架_肝了一个半月的 Java 项目快速开发脚手架:Chewing
  5. nutch mysql hadoop_nutch2.2.1+ hadoop1.2.1 + mysql5.6.13
  6. MS UC 2013-2-Deploy Microsoft Exchange Server 2013-4-Post-Installation Tasks
  7. 三星s20计算机怎么添加到桌面,三星s20+怎么分屏?三星s20系列多窗口分屏设置操作步骤...
  8. python turtle画彩虹简单_Python基础实例——绘制彩虹(turtle库的应用)
  9. 内网穿透软件NPS--客户端NPC SDK交叉编译ARM64位库
  10. python爬取斗鱼弹幕_Python爬取斗鱼的弹幕,看看奇葩网友都说了些什么
  11. oracle为什么主键不唯一,Oracle GoldenGate 针对表没有主键或唯一索引的解决方案
  12. linux内核 v4l2编译,Linux之V4L2基础编程
  13. 一个DIV的芝士汉堡制作
  14. 一个文本回射C/S程序并讨论:fork、信号处理机制、僵死进程处理
  15. KubeEdge+Fabedge集成环境搭建教程
  16. 【网络流量监控工具之Nethogs】
  17. attention机制、self-attention、channel attention、spatial attention、multi-head attention、transformer
  18. 计算机应用教学总结,计算机教学总结
  19. 驻场开发一个月了,我的情况就是这样
  20. 带你一文通透CAN总线相关知识

热门文章

  1. 高德推出查岗功能_高德查岗功能怎么用 「家人地图」新功能_位置在哪
  2. Python批处理文件
  3. 粒子群优化算法python_粒子群优化算法(PSO)
  4. linux编译C++代码
  5. pandas将数组写入csv新增一列
  6. pytorch冻结模型
  7. 【课程复习+记录】最优化理论与方法
  8. 基于LSTM的多变量多步序列预测模型实战「超详细实现说明讲解」
  9. PIL图像处理时使用np.unit8转化报错: Cannot handle this data type: (1, 1), |O
  10. 数据挖掘著名学者的网站