MongoDB - 上限集合

上限集合是固定大小的循环集合,遵循插入顺序以支持创建,读取和删除操作的高性能.通过循环,这意味着当分配给集合的固定大小耗尽时,它将开始删除集合中最旧的文档而不提供任何显式命令.

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

创建上限集合

要创建上限集合,我们使用普通的createCollection命令,但使用 capped 选项作为 true 并指定集合的最大大小(以字节为单位).

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

除了集合大小,我们还可以使用 max 参数 :

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

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

>db.cappedLogCollection.isCapped()

如果有existi您计划转换为上限的ng集合,您可以使用以下代码 :

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

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

查询上限集合

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

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

关于上限集合,其他几点也很重要值得知道 :

  • 我们无法从上限集合中删除文档.

  • 上限集合中没有默认索引,甚至在_id字段中也没有.

  • 插入新文档时,MongoDB会不必实际寻找一个容纳磁盘上新文档的地方.它可以盲目地将新文档插入集合的尾部.这使得在上限集合中的插入操作非常快.

  • 同样,在阅读文档时,MongoDB以与磁盘上存在的顺序相同的顺序返回文档.这使得读取操作非常快.