MongoDB – 上限集合

MongoDB – 上限集合


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

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

创建上限集合

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

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

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

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

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

>db.cappedLogCollection.isCapped()

如果您计划将现有集合转换为上限,则可以使用以下代码进行操作 –

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

此代码会将我们现有的收藏帖子转换为有上限的收藏。

查询上限集合

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

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

关于有上限的集合,还有其他一些值得了解的要点 –

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

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

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

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁