MongoDB - Bộ sưu tập giới hạn

Capped collectionslà các tập hợp hình tròn có kích thước cố định tuân theo thứ tự chèn để hỗ trợ hiệu suất cao cho các hoạt động tạo, đọc và xóa. Theo vòng tròn, điều đó có nghĩa là khi kích thước cố định được phân bổ cho bộ sưu tập hết, nó sẽ bắt đầu xóa tài liệu cũ nhất trong bộ sưu tập mà không cung cấp bất kỳ lệnh rõ ràng nào.

Bộ sưu tập có giới hạn hạn chế cập nhật tài liệu nếu cập nhật dẫn đến kích thước tài liệu tăng lên. Vì bộ sưu tập có giới hạn lưu trữ tài liệu theo thứ tự của ổ lưu trữ, nó đảm bảo rằng kích thước tài liệu không làm tăng kích thước được phân bổ trên đĩa. Bộ sưu tập có giới hạn là tốt nhất để lưu trữ thông tin nhật ký, dữ liệu bộ nhớ cache hoặc bất kỳ dữ liệu khối lượng lớn nào khác.

Tạo bộ sưu tập có giới hạn

Để tạo một bộ sưu tập có giới hạn, chúng tôi sử dụng lệnh createCollection bình thường nhưng với capped tùy chọn như true và chỉ định kích thước tối đa của bộ sưu tập tính bằng byte.

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

Ngoài kích thước bộ sưu tập, chúng tôi cũng có thể giới hạn số lượng tài liệu trong bộ sưu tập bằng cách sử dụng max tham số -

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

Nếu bạn muốn kiểm tra xem một bộ sưu tập có bị giới hạn hay không, hãy sử dụng cách sau isCapped lệnh -

>db.cappedLogCollection.isCapped()

Nếu có một bộ sưu tập hiện tại mà bạn đang dự định chuyển đổi thành giới hạn, bạn có thể thực hiện điều đó bằng mã sau:

>db.runCommand({"convertToCapped":"posts",size:10000})

Mã này sẽ chuyển đổi bộ sưu tập hiện có của chúng tôi posts vào một bộ sưu tập giới hạn.

Truy vấn bộ sưu tập có giới hạn

Theo mặc định, một truy vấn tìm trên bộ sưu tập có giới hạn sẽ hiển thị kết quả theo thứ tự chèn. Nhưng nếu bạn muốn các tài liệu được truy xuất theo thứ tự ngược lại, hãy sử dụngsort như được hiển thị trong đoạn mã sau:

>db.cappedLogCollection.find().sort({$natural:-1})

Có một số điểm quan trọng khác về bộ sưu tập có giới hạn đáng biết -

  • Chúng tôi không thể xóa tài liệu khỏi bộ sưu tập có giới hạn.

  • Không có chỉ mục mặc định nào có trong bộ sưu tập giới hạn, thậm chí không có trên trường _id.

  • Trong khi chèn một tài liệu mới, MongoDB không phải thực sự tìm kiếm một nơi để chứa tài liệu mới trên đĩa. Nó có thể chèn tài liệu mới vào đuôi bộ sưu tập một cách mù quáng. Điều này làm cho các hoạt động chèn trong bộ sưu tập giới hạn rất nhanh.

  • Tương tự, trong khi đọc tài liệu, MongoDB trả về các tài liệu theo thứ tự như hiện có trên đĩa. Điều này làm cho hoạt động đọc rất nhanh.