MongoDB固定(Capped Collections)
1年前 (2024-04-27)
固定是具有固定大小的循环,遵循插入顺序,以支持高性能的创建、读取和删除操作。通过循环,当分配给的固定大小用完时,它将删除中最旧的文档,而不提供任何显式令。
如果更新导致文档大小增加,则固定会限制对文档的更新。由于固定是按磁盘存储的顺序存储文档的,因此可以确保文档大小不会增加磁盘上分配的大小。固定最适存储日志信息、缓存数据或任何其他高容量数据。
如果更新导致文档大小增加,则固定会限制对文档的更新。由于固定是按磁盘存储的顺序存储文档的,因此可以确保文档大小不会增加磁盘上分配的大小。固定最适存储日志信息、缓存数据或任何其他高容量数据。
创建固定
要创建一个具有固定大小的,我们可以使用常规的 createCollection 令,但需要将 capped 选项设置为 true,并以字节为单位设置的大小。其中 bianchengbang 为要创建的名称。除了的大小外,我们还可以使用 max 参数来限制中文档的数量:> db.createCollection("bianchengbang", {capped:true, size:10000})
{ "ok" : 1 }
如果要检查是否为固定,可以使用 isCapped 令:> db.createCollection("bianchengbang", {capped:true, size:10000, max:1000})
{ "ok" : 1 }
如果您需要将已经存在的转换为固定,可以使用如下令:> db.bianchengbang.isCapped()
true
上面的令可以将我们已存在的“bianchengbang”转换为固定。> db.runCommand({"convertToCapped":"bianchengbang",size:10000})
{ "ok" : 1 }
固定查询
固定中的文档是按照插入顺序储存的,默认情况下查询也是按照插入顺序返回的,当然也可以使用 sort() 方法调整返回的顺序。示例代码如下:关于固定,有以下几点需要注意:> db.bianchengbang.find().sort({$natural:-1})
可以在固定中插入或更新数据,但更新时数据不能超出的大小,否则更新会失败;
不允许删除固定中的文档,但是可以使用 drop() 方法删除中的所有数据,在 drop 后需要显式地重建;
固定中不存在默认索引,甚在 _id 字段上也不存在;
在插入新文档时,MongoDB 实际上不必在磁盘上寻找容纳新文档的位置,它可以在的尾部盲目地插入新文档,这使得在固定中插入文档非常快;
在查询文档时,MongoDB 返回的文档顺序与文档在磁盘上存储的顺序是相同的,这使得查询文档的速度非常快。