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()
如果有计划将其转换为上限的现有集合,则可以使用以下代码进行处理-
>db.runCommand({"convertToCapped":"posts",size:10000})
此代码会将我们现有的收藏转换posts
为有上限的集合。
查询上限集合
默认情况下,在上限集合上的查找查询将按插入顺序显示结果。但是,如果您希望以相反的顺序检索文档,请使用sort
以下代码中所示的命令-
>db.cappedLogCollection.find().sort({$natural:-1})
关于封顶的收藏集,还有一些其他重要要点-
我们无法从上限集合中删除文档。
在上限集合中没有默认索引,即使在_id字段上也没有。
插入新文档时,MongoDB不必实际在磁盘上寻找容纳新文档的位置。它可以将新文档盲目插入到集合的末尾。这使得加盖集合中的插入操作非常快。
同样,在读取文档时,MongoDB会以与磁盘上相同的顺序返回文档。这使得读取操作非常快。