MongoDB 有界集合

MongoDB 有界集合

有界集合 是固定大小的循环集合,按照插入顺序支持高性能的创建、读取和删除操作。循环的意思是当分配给集合的固定大小用完时,它将开始删除集合中最旧的文档,而不提供任何显式命令。

有界集合限制了对文档的更新,如果更新导致文档大小增加。由于有界集合按照磁盘存储的顺序存储文档,它确保文档大小不会增加磁盘上的分配大小。有界集合最适合存储日志信息、缓存数据或任何其他高容量数据。

创建有界集合

要创建一个有界集合,我们使用普通的createCollection命令,但是加上 capped 选项,其值为 true ,并指定集合的最大大小(以字节为单位)。

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

除了集合大小之外,我们还可以使用 max 参数限制集合中文档的数量

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

如果想要检查一个集合是否为固定大小的(capped),可以使用以下的 isCapped 命令 –

>db.cappedLogCollection.isCapped()

如果您计划将现有集合转换为固定大小的集合,可以使用以下代码:

>db.runCommand({"convertToCapped":"posts",size:10000})

这段代码将会将我们现有的集合 posts 转换成一个有限集合。

查询有限集合

默认情况下,在有限集合上进行的查询按照插入顺序显示结果。但是如果你希望以相反的顺序检索文档,请使用以下代码中所示的 sort 命令。

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

下面有关于已设置上限的集合的几个重要点值得知道−

  • 我们不能从已设置上限的集合中删除文档。

  • 已设置上限的集合中没有默认的索引,甚至没有_id字段的索引。

  • 在插入新文档时,MongoDB不必真正查找磁盘上的位置来容纳新文档。它可以盲目地将新文档插入到集合的末尾。这使得插入操作在已设置上限的集合中非常快。

  • 同样,在读取文档时,MongoDB按照在磁盘上的顺序返回文档。这使得读取操作非常快。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程