mongodb固定集合(capped collections)是固定大小的循环集合,遵循插入顺序以支持创建,读取和删除操作的高性能。 通过循环,当分配给集合的固定大小被耗尽时,它将开始删除集合中最旧的文档,而不用提供任何明确的命令。
如果更新导致增加的文档大小,固定集合会限制文档的更新。 由于上限集合按照磁盘存储的顺序存储文档,因此可确保文档大小不会增加磁盘上分配的大小。固定集合最适用于存储日志信息,缓存数据或任何其他高容量数据。
要创建一个固定集合,可使用 createcollection
命令,但是capped
选项的值为true
,并指定以字节为单位的最大集合大小。
>db.createcollection("cappedlogcollection",{capped:true,size:99999})
除了指定集合大小,还可以使用max
参数限制集合中的文档数量 -
>db.createcollection("cappedlogcollection",{capped:true,size:99999,max:1000})
如果要查看集合是否固定,请使用以下iscapped
命令 -
>db.cappedlogcollection.iscapped()
如果想要将一个集合转换为上限的集合,则可以使用以下代码进行操作:
>db.runcommand({"converttocapped":"posts",size:99999})
此代码将现有的post
转换为固定集合。
默认情况下,在固定集合上查询将以插入顺序显示结果。 但是,如果要以相反的顺序检索文档,请使用sort
命令,如以下代码所示 -
> db.cappedlogcollection.find().sort({$natural:-1})
关于固定集合值得注意的几个要点 -
_id
字段上。