MongoDB固定集合

指针潮汐
• 阅读 2256

一般情况下我们创建的集合是没有大小的,可以一直往里边添加文档,这种集合可以动态增长,MongoDB中还有一种集合叫做固定集合,这种集合的大小是固定的,我可以在创建的时候设置该集合中文档的数目,假设为100条,当集合中的文档数目达到100条时,如果再向集合中插入文档,则只会保留最新的100个文档,之前的文档则会被删除。一般像日志信息我们就可以使用固定集合,其他一些需要定期删除的数据也可以使用固定集合,本文我们就来看看这个固定集合的使用。

本文是MongoDB系列的第十一篇文章,了解前面的文章有助于更好的理解本文:


1.Linux上安装MongoDB
2.MongoDB基本操作
3.MongoDB数据类型
4.MongoDB文档更新操作
5.MongoDB文档查询操作(一)
6.MongoDB文档查询操作(二)
7.MongoDB文档查询操作(三)
8.MongoDB查看执行计划
9.初识MongoDB中的索引
10.MongoDB中各种类型的索引


创建

固定集合的创建方式也比较简单,如下:

db.createCollection("my_collect",{capped:true,size:10000,max:100})

capped:true参数表示该集合为一个固定大小集合,size表示集合的大小,单位为kb,max则表示集合中文档的最大数量。我们这里相当于给了固定集合两个限制条件,只要有任意一个限制条件满足,集合都会开始将更古老的数据删除。固定集合一旦创建成功就不能再修改,想修改只能删除重来。此时我们可以尝试向集合中添加120条简单的数据,然后我们会发现最早的20条数据消失了。

除了直接创建一个固定集合外,我们也可以通过convertToCapped操作将一个普通集合转为一个固定集合,如下:

db.runCommand({convertToCapped:"sang_collect",size:10})

自然排序问题

自然排序就是按照文档在磁盘中的顺序来进行排列,在普通的集合中自然排序并没有多大的意义,因为文档的位置总是在变化,而固定集合中的文档是按照文档被插入的顺序保存的,自然顺序也就是文档的插入顺序,因此我们可以利用自然排序对文档从旧到新排序,如下:

db.sang_collect.find().sort({$natural:1})

也可以从新到旧排序:

db.sang_collect.find().sort({$natural:-1})

固定集合中的其他操作和普通集合基本一致,这里就不再赘述。

好了,MongoDB中的固定集合我们就说到这里,小伙伴们有问题欢迎留言讨论。

参考资料:

1.《MongoDB权威指南第2版》

更多资料请关注公众号:

MongoDB固定集合

点赞
收藏
评论区
推荐文章
亮亮 亮亮
4年前
精通 MongoDB - 基础入门
  关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。一:下载   上MongoDB官网(http
Wesley13 Wesley13
3年前
Java中Map,List与Set的区别
首先,数组和集合的区别:数组是大小固定的集合可以存储和操作数目不固定的一组数据,集合只能存放引用类型的的数据,不能存放基本数据类型特性List允许重复有序继承自ConnectionSet不允许重复无序继承自Connection
Wesley13 Wesley13
3年前
MongoDB 数据库的概念以增删改查
1,MongoDB概念解析:Mongo数据库基本概念是文档,集合,数据库,下表给予介绍SQL术语概念MongoDB术语概念解释/说明databasedatabase数据库tablecollestion数据库/集合rowdocument数据记录行/文档columnfield数据字段/域inde
Wesley13 Wesley13
3年前
MongoDB学习(1)
不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。数据库一个mongodb中可以建立多个数据库,MongoDB中默认数据库为"db",该数据库存储在data目录中。在MongoDB中可以创建数据库,如果你想使用MongoDB,创建数据库不是必要的。"showd
Stella981 Stella981
3年前
MongoDB 文档(Document)操作
MongoDB文档操作(增、删、改)在MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分MongoDB中的文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式BSON是一种类似JSON的二进制形式的存储格式,是
Wesley13 Wesley13
3年前
MongoDB基础
MongoDB与关系型数据库的对比:!(https://oscimg.oschina.net/oscnet/545b6624046cd348c3b292bc4b161d0a272.png) 1.创建数据库: 2.创建集合3.集合的增、删、改、查1)在集合(表名)中插入一个文档(一行数据):db.集合名称.insert({name
可莉 可莉
3年前
21.30 mongodb创建集合、数据管理
21.30mongodb创建集合、数据管理MongoDB创建集合:db.createCollection("mycol",{capped:true,size:6142800,max:10000})//语法:db.createCollection(name,options)name就是集合
Stella981 Stella981
3年前
Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)
接着上篇博文,继续学习Ruby操作Mongo数据库,本博文介绍的是MongoDB的基本数据,即数据库的CRUD操作(创建,查询,更新,删除)1.创建一个集合,插入一个文档1.1如果是将单个文档插入结果,使用insert\_one方法;选择集合people,操作语句collectionclient\:people\定义要插入的文档数据和
Wesley13 Wesley13
3年前
MongoDB快速入门
数据数数据库是一个集合的物理容器。每个数据库获取其自己设定在文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。集合集合是一组MongoDB的文件。它与一个RDBMS表是等效的。一个集合存在于数据库中。集合不强制执行模式。集合中的文档可以有不同的字段。通常情况下,在一个集合中的所有文件都是类似或相关目的。文档
小万哥 小万哥
1年前
高效使用 PyMongo 进行 MongoDB 查询和插入操作
插入到集合中:要将记录(在MongoDB中称为文档)插入到集合中,使用insertone()方法。insertone()方法的第一个参数是一个包含文档中每个字段的名称和值的字典。pythonimportpymongomyclientpymongo.Mong
小万哥 小万哥
1年前
深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析
在MongoDB中,我们使用find()和findone()方法来在集合中查找数据,就像在MySQL数据库中使用SELECT语句来在表中查找数据一样查找单个文档要从MongoDB的集合中选择数据,我们可以使用findone()方法。findone()方法返
指针潮汐
指针潮汐
Lv1
晚霞真好,日出日落在我眼里都很美。
文章
5
粉丝
0
获赞
0