Docs 菜单

创建固定大小集合

要创建固定大小集合,请在 db.createCollection() 方法或 create 命令中指定 capped 选项。

您必须显式创建固定大小集合。您不能通过将数据插入到不存在的集合中来隐式创建固定大小集合。

当您创建固定大小集合时,必须指定集合的最大大小。MongoDB 为集合预先分配指定的存储。固定大小集合的大小包括少量内部开销空间。

您可以选择指定集合的最大文档数。如果集合在达到最大文档计数之前达到最大大小限制,MongoDB 会删除较旧的文档。

通常情况下,TTL(存活时间)索引比固定大小集合提供更好的性能和更大的灵活性。TTL 索引会过期,并根据日期类型字段的值和索引的 TTL 值从正常集合中删除数据。

固定大小集合对写入操作进行序列化,因此其并发插入、更新和删除性能不如非固定大小集合。在创建固定大小集合之前,请考虑是否可以改用 TTL 索引。

以下示例展示了如何:

创建一个名为 log 的固定大小集合,其最大大小为 100000 字节:

db.createCollection( "log", { capped: true, size: 100000 } )

注意

您为 size 字段提供的值必须大于 0 且小于或等于 1024^5 (1 PB)。MongoDB 将所有固定大小集合的 size 舍入到最接近的 256 整数倍(以字节为单位)。

创建一个名为 log2 的固定大小集合,其最大大小为 5,242,880 字节,最多可存储 5,000 大小的文档:

db.createCollection(
"log2",
{
capped: true,
size: 5242880,
max: 5000
}
)

重要

即使您指定了最大文档数 ( max),size 字段始终为必需。