我想在3天后刪除用戶帳戶,如果他們不驗證他們的電子郵件。由於調度程序效率低下,我正在尋找一種方法來在MongoDB中安排這種刪除。如果用戶驗證電子郵件,我還需要一種取消方法。在n天后刪除MongoDB文檔
我正在使用mgo作爲API for MongoDB,而且我正在運行最新的Go(1.9)。
我想在3天后刪除用戶帳戶,如果他們不驗證他們的電子郵件。由於調度程序效率低下,我正在尋找一種方法來在MongoDB中安排這種刪除。如果用戶驗證電子郵件,我還需要一種取消方法。在n天后刪除MongoDB文檔
我正在使用mgo作爲API for MongoDB,而且我正在運行最新的Go(1.9)。
這可以在MongoDB的3.4版
實現您可以沿着使用MongoDB的TTL指數與partial index expression。
嘗試users
集合添加以下指標:
db.users.ensureIndex(
{ created_at:1},
{ expireAfterSeconds:259200,
partialFilterExpression:{"verified" : false}})
這與刪除所有誰不驗證,它已經3天了,他們加入這些用戶TTL指數。
蒙戈TTL索引只支持一個日期時間,沒有進一步的條件邏輯多於
if NowDate() > fieldDate { killMe() }
唯一的解決方法我能想到的是...(從MongoDB documentation:萃取)
If the indexed field in a document is not a date or an array that holds a date value(s), the document will not expire.
因此,當用戶驗證他的電子郵件時,將您的字段設置爲null
可能會訣竅。
歡呼
[通過設置TTL從集合中過期數據](https://docs.mongodb.com/manual/tutorial/expire-data/)確實是第一個搜索結果的種類。 –
[MongoDB:如何從集合中刪除舊記錄?](https://stackoverflow.com/questions/46441006/mongodb-how-to-remove-older-records-from-a-collection) –