2014-02-10 79 views
3

我正在開發一個PHP應用程序,它將歷史日誌存儲在MongoDB集合中。在MongoDB上過期時自動刪除文檔

1小時後,這些數據並不重要,並且會被每小時運行一次的CRON進程刪除。

現在的問題是,是否有任何其他解決方案,自插入後一段時間後自動刪除這些文件?

非常感謝!

+0

這是一個非常好的問題+1 – CesarTrigo

回答

2

要在某段時間後過期文檔,您可以創建一個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秒

我也建議你看看下面的文章,解釋準確完整的進程中運行。