在Go 中使用MongoDB 在指定秒數後使文件過期
使用TTL 索引,MongoDB 允許您在指定時間後使您自動文檔過期期間。本文示範如何使用官方 mongo-go-driver 在 Go 中實現此目的。
按照MongoDB 文檔,代碼展示瞭如何:
但是,提供的範例執行正確,且問題與程式碼無關。
了解 TTL 索引行為
expireAfterSeconds 參數指定在createdAt 欄位之後文件應被視為過期的持續時間。不過,過期文檔的刪除並不是立即進行的。
根據MongoDB 文件:
「TTL 索引並不能保證過期資料會在過期後立即刪除。可能會有延遲文件過期時間和MongoDB 從資料庫中刪除文件的時間之間。 ”
用於刪除的後台任務
MongoDB 有一個刪除過期文檔的後台任務每60 秒一次。因此,文件在過期後可能會在集合中保留最多 60 秒。此外,如果資料庫負載過重,刪除所有過期文件可能需要額外的時間。
解決方案
在您的程式碼片段中,您期望一些文件將在5 秒後刪除(基於expireAfterSeconds 選項),但僅在插入後等待幾秒進行驗證。為了正確測試功能,您應該留出足夠的時間(至少幾分鐘)讓後台任務執行並刪除過期的文件。
以上是為什麼我的 MongoDB 文件在 Go 中使用 TTL 索引 5 秒後沒有過期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!