开发学院

您的位置:首页>教程>正文

教程正文

MongoDB Capped Collections(上限集合)

MongoDB Capped Collections(上限集合)

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

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

创建Capped Collection

  要创建带上限的集合,我们使用normal createCollection命令,但将带上限的选项设置为true,并指定集合的最大大小(以字节为单位)。

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

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

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

  如果要检查集合是否有上限,请使用以下isCapped命令-

>db.cappedLogCollection.isCapped()

  如果存在要转换为capped的现有集合,则可以使用以下代码执行此操作-

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

  此代码将把我们现有的集合帖子转换为有上限的集合。

查询Capped Collection

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

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

  关于有上限的集合,还有其他几个要点值得了解

  •   我们无法从有上限的集合中删除文档。

  •   有上限的集合中不存在默认索引,甚至在_ id字段中也不存在。

  •   插入新文档时,MongoDB实际上不需要在磁盘上寻找容纳新文档的位置。它可以在集合的尾部盲目插入新文档。这使得上限集合中的插入操作非常快。

  •   类似地,当读取文档时,MongoDB以与磁盘上的文档相同的顺序返回文档。这使得读取操作非常快。