- [Người hướng dẫn] Một chỉ mục cung cấp một cách có tổ chức để tra cứu dữ liệu bằng cách lưu trữ một tập hợp con của dữ liệu với các con trỏ tới vị trí của các bản ghi đầy đủ. Có nhiều loại chỉ mục mà bạn có thể sử dụng để tăng tốc độ truy xuất dữ liệu dựa trên loại dữ liệu bạn lưu trữ trong bộ sưu tập của mình. Và cũng có các chỉ mục chuyên biệt, như chỉ mục thời gian tồn tại hoặc viết tắt là chỉ mục TTL. Chỉ mục TTL tăng tốc truy vấn giống như chỉ mục thông thường, nhưng chúng cũng tự động xóa tài liệu khỏi bộ sưu tập sau một khoảng thời gian nhất định đã trôi qua. Chúng đặc biệt hữu ích khi bạn đang tạo nhiều dữ liệu, chẳng hạn như có khóa và muốn dọn sạch dữ liệu đó sau một thời gian nhất định. Và chúng cũng có thể hữu ích với dữ liệu cần xóa sau một khoảng thời gian nhất định vì lý do quy định. Vì vậy, hãy tạo một trong những chỉ mục TTL này. Để tạo một chỉ mục TTL, chúng ta sẽ gọi phương thức createIndex và chúng ta sẽ phải gọi nó trên một…
Xem các khóa học trên thiết bị di động của bạn mà không cần kết nối internet. Tải xuống các khóa học bằng ứng dụng LinkedIn Learning trên iOS hoặc Android của bạn Gần đây tôi cần xóa một số tài liệu mà tôi đã lưu trong MongoDB sau một thời gian. Tôi có thể nghĩ ra một vài ví dụ về lý do tại sao chúng tôi muốn xóa dữ liệu sau một thời gian Chúng tôi có thể làm điều đó bằng cách chạy một cronjob xóa dữ liệu, xóa dữ liệu mỗi khi chúng tôi chèn dữ liệu mới hoặc bất kỳ giải pháp nào khác May mắn cho tôi, vợ tôi nói với tôi rằng MongoDB đã tích hợp sẵn cơ chế đó Các chỉ mục TTL [Time-To-Live] là các chỉ mục trường đơn đặc biệt mà MongoDB có thể sử dụng để tự động xóa tài liệu khỏi bộ sưu tập sau một khoảng thời gian nhất định Chuỗi nền trong MongoDB đọc các giá trị trong chỉ mục và xóa các tài liệu đã hết hạn khỏi bộ sưu tập [thường là mỗi phút]Tải xuống các khóa học và học mọi lúc, mọi nơi
Ví dụ: để tạo chỉ mục TTL trên
lastModifiedDate
trường củaeventlog
bộ sưu tập, hãy sử dụng thao tác sau trong trình bao mongodb.eventlog.createIndex[ { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } ]
- Trường được lập chỉ mục phải là loại ngày BSON hoặc một mảng ngày BSON
- Nếu trường được lập chỉ mục trong tài liệu không phải là ngày hoặc mảng chứa [các] giá trị ngày, thì tài liệu sẽ không hết hạn
- Nếu tài liệu không chứa trường được lập chỉ mục, tài liệu sẽ không hết hạn
xóa có điều kiện
Kể từ MongoDB 3. 2, một bộ sưu tập có thể được lập chỉ mục một phần bằng cách sử dụng biểu thức bộ lọc được chỉ định,
partialFilterExpression
. Chỉ mục TTL cũng có thể được sử dụng với chỉ mục một phầnVí dụ
Xóa tài liệu đã tạo 1 giờ trước nếu
state
bằng vớiTMP
db.eventlog.createIndex[
{ created_at: 1 },
{ expireAfterSeconds: 3600, partialFilterExpression: { state: 'TMP' } }
];
Xóa tài liệu đã tạo 1 ngày trước nếu
count
thấp hơn5
db.eventlog.createIndex[
{ created_at: 1 },
{ expireAfterSeconds: 86400, partialFilterExpression: { count: { $lt: 5 } } }
];
Thông tin bổ sung về các chỉ mục một phần
Ví dụ thực tế
Gần đây tôi đã hoàn thành việc phát triển BundleMon, một công cụ miễn phí giúp bạn theo dõi kích thước gói ứng dụng của mình
Một trong những thành phần trong BundleMon là dịch vụ lưu các báo cáo lịch sử để so sánh kích thước gói giữa các nhánh. Vì vậy, khi bạn mở PR, BundleMon sẽ lưu một bản ghi với báo cáo kích thước gói hiện tại
Không cần lưu báo cáo quá 30 ngày nên mình mới thêm chỉ số TTL
eventlog
0Cũng được xuất bản tại https. // nhà phát triển. đến/lironer/xóa-hết hạn-tài liệu-tự động-với-mongodb-ttl-index-l44
Chỉ số Thời gian tồn tại [TTL] được xác định cho mỗi bộ sưu tập dựa trên giá trị
eventlog
3 được cung cấp. Theo mặc định, các bộ sưu tập không có chỉ mục TTLVí dụ, bạn có thể sử dụng trình trợ giúp
eventlog
4 trong MongoDB Shell để lấy thông tin chỉ mụceventlog
1Ví dụ: bạn có thể sửa đổi thời hạn sử dụng cho chỉ mục TTL bằng cách sử dụng lệnh
eventlog
5eventlog
2Nếu đó không phải là thông tin bạn đang tìm kiếm, vui lòng cung cấp thêm một số chi tiết về môi trường của bạn