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})
此代码将转换现有集合帖子到上限集合。
查询上限集合:
默认情况下,在上限集合查找查询将显示在插入顺序的结果。但是,如果想检索顺序相反的文件,使用如下面的代码 sort 命令:
>db.cappedLogCollection.find().sort({$natural:-1})
有关于上限集合值得了解的其他几个要点:
- 我们不能删除上限集合文档
- 还有没有默认索引在上限集合,甚至没有_id字段
- 同时插入一个新的文档,MongoDB并没有实际查找一个地方,以适应在磁盘上新的文档。 它可以盲目在集合的尾部插入新的文档。这使得在上限集合插入操作速度非常快。
- 同样,虽然读文件MongoDB刚刚返回相同的顺序文件在于磁盘上。这使得读取操作速度非常快。