扫码一下
查看教程更方便
MongoDB 上限集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素!
如果更新导致文档大小增加,上限集合会限制对文档的更新。由于上限集合按磁盘存储的顺序存储文档,因此可以确保文档大小不会增加磁盘上分配的大小。上限集合最适合存储日志信息、缓存数据或任何其他大量数据。
要创建一个有上限的集合,我们使用普通的 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})
以上代码将我们已存在的 posts 集合转换为固定集合。
默认情况下,对上限集合的查找将按插入顺序显示结果。但是,如果希望以相反的顺序检索文档,可以使用sort命令,如下面的代码所示
> db.cappedLogCollection.find().sort({$natural:-1})
关于有上限集合,还有其他一些值得了解的要点