我正在開發一個PHP應用程序,它將歷史日誌存儲在MongoDB集合中。在MongoDB上過期時自動刪除文檔
1小時後,這些數據並不重要,並且會被每小時運行一次的CRON進程刪除。
現在的問題是,是否有任何其他解決方案,自插入後一段時間後自動刪除這些文件?
非常感謝!
我正在開發一個PHP應用程序,它將歷史日誌存儲在MongoDB集合中。在MongoDB上過期時自動刪除文檔
1小時後,這些數據並不重要,並且會被每小時運行一次的CRON進程刪除。
現在的問題是,是否有任何其他解決方案,自插入後一段時間後自動刪除這些文件?
非常感謝!
要在某段時間後過期文檔,您可以創建一個TTL索引,它是一個特殊的索引屬性,它依賴於mongod中的後臺線程讀取目標索引日期值並對已過期的用戶執行刪除操作。
要做到這一點,你需要存儲的日誌收集在插入日期createdAt領域,例如,你可以使用「新的Date()」
要啓用TTL爲集合使用ensureIndex()方法創建具有expireAfterSeconds附加屬性的索引
db.log.ensureIndex。({ 「createdAt」:1},{expireAfterSeconds:3600})
該語句將創建一個TTL指數和MongoDB會自動刪除文件當createdAt值比createdAt值+ expireAfter舊時,從日誌集合中刪除秒數(3600 = 60秒* 60分鐘)。 http://mongodbspain.com/en/2014/02/08/expire-data-from-collections-using-ttl/
問候:
後臺任務刪除過期文件每60秒
我也建議你看看下面的文章,解釋準確完整的進程中運行。
這是一個非常好的問題+1 – CesarTrigo