我目前正在開發一個以MongoDB作爲數據庫系統的node.js服務器。在特定時間後自動更新貓鼬文檔(node.js)對象的屬性
我知道,有TTL(生存時間)和「過期」 MongoDB的一定時間後刪除文件。我的問題是,我不想刪除文件,我只是想將它們設置爲「不活動」。
那麼,有沒有類似的東西,以一個文件的一定時間後設置屬性,例如布爾「isActive」從真到假?
有沒有常見的MongoDB或node.js方法來做到這一點?
謝謝!
我目前正在開發一個以MongoDB作爲數據庫系統的node.js服務器。在特定時間後自動更新貓鼬文檔(node.js)對象的屬性
我知道,有TTL(生存時間)和「過期」 MongoDB的一定時間後刪除文件。我的問題是,我不想刪除文件,我只是想將它們設置爲「不活動」。
那麼,有沒有類似的東西,以一個文件的一定時間後設置屬性,例如布爾「isActive」從真到假?
有沒有常見的MongoDB或node.js方法來做到這一點?
謝謝!
MongoDB中沒有(時間延遲)觸發器自動觸發這樣的操作。
TTL功能只是每分鐘運行一次作業,檢查日期(在索引中)並確定應該刪除的內容。對於你的應用程序,你可以構建類似的東西。
添加一個索引日期字段,例如命名爲:inactiveAfter
。
運行作業每分鐘(或其他一些週期,取決於你的數據庫大小)更新文件({$set: {status:"inactive", inactiveAfter: null}}
)將要到期。出於性能原因,請確保查詢只需要觸摸索引。不要忘記設置{multi: true}
。
調度你的工作可以用很多方式完成,但一個簡單的cronjob可以完成這項工作。除了主節點服務器之外,我將這個任務放在一個單獨的項目中。