Skip to content

MongoDB 固定集合

什么是固定集合?

固定集合(Capped Collection) 是一种大小或文档数固定的集合,写入新数据时会覆盖最旧的数据,类似循环缓冲区。不支持删除单条文档,也不能修改文档导致尺寸变化(可做等长更新)。

创建固定集合

javascript
db.createCollection("logs", {
  capped: true,
  size: 1048576,   // 1MB,必选
  max: 1000        // 最多文档数(可选)
})
  • size:集合占用的最大字节数,必填。
  • max:最多保留的文档数(与 size 同时存在时,先触发的先淘汰)。

特性与限制

  • 插入顺序即存储顺序,自然按插入时间排序,适合日志、最近 N 条记录。
  • 无需建索引即可按插入顺序遍历,性能较好。
  • 不能删除文档、不能执行会改变文档大小的 update(可做等长 $set)。
  • 不能从固定集合中删除或 drop 索引(除 _id 外通常也不建额外索引)。

转换

普通集合不能转换为固定集合;固定集合也不能改为普通集合,只能新建集合并迁移数据。

适用场景

  • 最近 N 条日志、消息流、审计 trail 等“只保留最新”的数据。

至此,MongoDB 教程 基础与高级部分的主要章节已介绍完毕。