MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tự động xóa tài liệu sưu tập MongoDB

Một trong những tình huống phổ biến khi làm việc với cơ sở dữ liệu là tự động cắt bớt một số bảng dựa trên thời gian. Ví dụ:bạn có thể có một bảng công việc để theo dõi các công việc nền trong sản phẩm của mình và bạn chỉ muốn giữ công việc trong giờ cuối cùng. Cách nó thường được triển khai là bạn kết thúc việc viết một quy trình daemon chạy định kỳ và thu thập rác các bảng của bạn. Vì đây là một quá trình phổ biến như vậy, những người tại MongoDB đã xây dựng chức năng này vào cơ sở dữ liệu có thể được tận dụng trong các triển khai MongoDB của bạn! Nó được gọi là "chỉ mục TTL". Dưới đây là cách bạn có thể sử dụng chỉ mục TTL trong hai bước đơn giản:

  1. Bước 1:Thêm trường ngày

    Thêm trường ngày vào tài liệu của bạn để cho biết tuổi của tài liệu. MongoDB sẽ sử dụng trường này để xác định xem tài liệu của bạn có hết hạn và cần được xóa hay không. Nếu bạn muốn giữ tài liệu lâu hơn, chỉ cần cập nhật tài liệu này với một ngày cập nhật. Trong ví dụ bên dưới, tôi đã thêm trường “createTime” vào bộ sưu tập công việc của mình:

    db.jobs.insert( {
       "name" : testjob
       "creationTime": new Date('Oct 30, 2013: 11:00:00'),
       "type": 2,
    } )
  2. Bước 2:Thêm chỉ mục TTL

    Thêm chỉ mục TTL vào bộ sưu tập của bạn trên trường này. Trong ví dụ dưới đây, chúng tôi sẽ sử dụng giá trị expireAfterSeconds là 3600. Điều này sẽ kết thúc các công việc sau mỗi giờ:

    db.jobs.ensureIndex( { "creationTime": 1 }, { expireAfterSeconds: 3600 } )

    Trình nền TTL chạy 60 giây một lần, vì vậy tài liệu của bạn sẽ bị xóa trong khoảng 60 giây kể từ khi hết hạn. Một ưu điểm khác của các chỉ mục TTL là chúng cũng hoạt động giống như các chỉ mục bình thường - vì vậy bạn có thể truy vấn trên trường ngày tháng và kế hoạch truy vấn sẽ sử dụng chỉ mục. Để biết thêm chi tiết, hãy tham khảo tài liệu MongoDB về chỉ mục TTL.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB C # Driver 2.0 - Cập nhật tài liệu

  2. Không thể truy cập thuộc tính đối tượng của phản hồi Mongoose

  3. MongoServer.State tương đương trong trình điều khiển 2.0

  4. Tạo đối tượng ngày ISO trong javascript

  5. Có ai đã thử MongoDB trên Google App Engine không?