MongoDB 固定集合(Capped Collections)
MongoDB 固定集合(Capped Collections)的定义:
规定了集合的大小之后,如果保存的内容已经超过了集合的空间,那么再插入的元素就会覆盖最初始的头部的元素。
创建集合
默认情况下,创建一个集合可以使用 createCollection() 函数创建,或者是用增加数据自动创建。但是创建固定集合需要明确的创建一个空集合。
// 指定固定集合空间大小为 1024KB, 最大条数为 5
db.createCollection("logInfo", {"capped": true, size:1024, "max" : 5} );
参数说明:
- capped:true 表示为一个固定的集合。
- size:是整个集合空间大小, 单位为【KB】
- max:表示集合的文档个数,单位为【个】
判断集合是否为固定集合
db.logInfo.isCapped();
将已经存在的集合转为固定集合
// 将存在的集合转为 固定集合
db.runCommand({"convertToCapped":"collectionName", size:10000 });
示例:将之前文章中的 sales 集合转为固定集合
db.runCommand({"convertToCapped":"sales", size:10000 })
先检查数据
执行命令转换
测试
第一步
在前面我们创建 logInfo 的集合,指定了文档数只能有 5个,现在先插入 5 条数据:
db.logInfo.insertMany([
{"index": 1, name:"test1", item: "ABC"},
{"index": 2, name:"test2", item: "ABC"},
{"index": 3, name:"test3", item: "ABC"},
{"index": 4, name:"test4", item: "ABC"},
{"index": 5, name:"test5", item: "ABC"},
]);
第二步
接着我们向里面插入数据,并且查看
db.logInfo.insertOne({"index": 6, name:"test6", item: "ABC"});
插入数据
第三步
查看插入数据之后,集合中所有的数据情况。
对此,就可以看到我们的最早的数据就已经被删除了。