2014-11-25 75 views
2

我目前正在開發一個以MongoDB作爲數據庫系統的node.js服務器。在特定時間後自動更新貓鼬文檔(node.js)對象的屬性

我知道,有TTL(生存時間)和「過期」 MongoDB的一定時間後刪除文件。我的問題是,我不想刪除文件,我只是想將它們設置爲「不活動」。

那麼,有沒有類似的東西,以一個文件的一定時間後設置屬性,例如布爾「isActive」從真到假?

有沒有常見的MongoDB或node.js方法來做到這一點?

謝謝!

回答

2

MongoDB中沒有(時間延遲)觸發器自動觸發這樣的操作。

TTL功能只是每分鐘運行一次作業,檢查日期(在索引中)並確定應該刪除的內容。對於你的應用程序,你可以構建類似的東西。

添加一個索引日期字段,例如命名爲:inactiveAfter

運行作業每分鐘(或其他一些週期,取決於你的數據庫大小)更新文件({$set: {status:"inactive", inactiveAfter: null}})將要到期。出於性能原因,請確保查詢只需要觸摸索引。不要忘記設置{multi: true}

調度你的工作可以用很多方式完成,但一個簡單的cronjob可以完成這項工作。除了主節點服務器之外,我將這個任務放在一個單獨的項目中。