Mongodb設置數據過期自動刪除

1.今天要做一個驗證碼一樣的東西,讓用戶通過校驗。

下面這段是設置以createTime爲過期時間的索引,意思就是一條數據以其中createTime的字段時間爲準,超過該字段時間將這條數據刪除。

{expireAfterSeconds:0} 設置爲0  時間一到立馬刪除。

{ expireAfterSeconds: 60*2 } 設置延時秒,以設置的延時秒爲準,到時間以設置的延時爲基準刪除數據。

//在mongodb中設置過期索引 將createTime字段設置爲過期時間,刪除時間爲120秒
db.auth_session.createIndex({ "createTime": 1 }, { expireAfterSeconds: 60*2 })

2.在node.js中操作不了 IOS Date數據格式。且獲取到的createTime時間是字符串類型的,導致mongodb根本不識別,就更不要說根據這個時間字段刪除了。

3.在Node.js中需要將createTime時間 使用new Date() 處理一下。

var insertStr = {
    email: ctx.request.body.email,
    auth_code: util.verificationCode(),
    createTime: new Date(util.getTime())  //將時間處理一下。轉換爲Mongodb認識的數據格式。
                                          //如 2019-12-20 11:21:10.000 
}

4.Mongodb中成功得到如下數據:

{
    "_id": ObjectId("5dfc3e5da1c0fc3148a7b1ed"),
    "email": "[email protected]",
    "auth_code": "43IQK",
    "createTime": ISODate("2019-12-20T03:22:04.000Z")
}

解釋一下,我加入的時間是11點鐘,加入數據缺少八個小時是正確的。獲取的時間會經過 new Date()轉換一次,不要驚慌。

舉個例子:我要刪除2019-12-20 16:50:22.00的數據,那麼你插入數據庫的正確時間應該爲2019-12-20 08:50:22.000

還有這個時間字段查詢出來不會是缺少8個小時的數據。而是對應需要刪除的時間。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章