Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Chuyển đổi Collection thành Capped Collection trong MongoDB

Capped Collection là collection có dung lượng cố định (fixed-size), tự động xóa tài liệu cũ nhất khi đầy (FIFO - First In First Out). Phù hợp cho log, cache, metrics. Để chuyển collection thường thành Capped, dùng lệnh db.runCommand({ convertToCapped: ... }).

1. Tạo collection thường và chèn dữ liệu

> db.demo416.insertOne({ "StudentName": "David" });
> db.demo416.insertOne({ "StudentName": "Mike" });
> db.demo416.insertOne({ "StudentName": "Sam" });

2. Chuyển sang Capped Collection với size = 100 bytes

> db.runCommand({ convertToCapped: 'demo416', size: 100 });
{ "ok": 1 }

Lưu ý: size là dung lượng **tối đa tính bằng bytes** cho cả data + index. Giá trị 100 bytes rất nhỏ (chỉ demo), thực tế thường dùng MB/GB (ví dụ: 100 * 1024 * 1024 cho 100MB).

3. Kiểm tra trạng thái Capped

> db.demo416.stats();

Kết quả quan trọng:

{
    "capped": true,          // ĐÃ CHUYỂN THÀNH CAPPED
    "maxSize": 256,          // Kích thước tối đa thực tế (MongoDB căn chỉnh)
    "max": -1                // Không giới hạn số document (-1 = vô hạn, chỉ giới hạn bằng size)
}

Đặc điểm Capped Collection:

  • Không thể delete tài liệu đơn lẻ (chỉ drop() cả collection).
  • Không thể update làm tăng kích thước tài liệu.
  • Tự động xóa cũ khi insert mới làm vượt maxSize.
  • Hiệu suất insert/read rất cao (vòng tròn - circular buffer).
  • Hỗ trợ Tailable Cursor (theo dõi real-time như tail -f log).

Tạo mới Capped trực tiếp: db.createCollection("logs", { capped: true, size: 1000000, max: 5000 }).