MongoDB之索引(過期索引)

stonebox1122發表於2017-08-24
在一些站點會出現若干秒之後資訊被刪除的情況,例如:手機驗證碼。那麼在MongoDB裡面就可以輕鬆實現過期索引,但是這個時間往往不怎麼準確。

範例:設定過期索引,10秒後過期
> db.phones.createIndex({"time":1},{expireAfterSeconds:10})
{
        "createdCollectionAutomatically" : true,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}

再插入資料:
db.phones.insert({"tel":110,"code":110,"time":new Date()});
db.phones.insert({"tel":111,"code":111,"time":new Date()});
db.phones.insert({"tel":112,"code":112,"time":new Date()});
db.phones.insert({"tel":113,"code":113,"time":new Date()});
db.phones.insert({"tel":114,"code":114,"time":new Date()});

檢視:
> db.phones.find();
{ "_id" : ObjectId("5992b97f0184ff511bf02bb2"), "tel" : 110, "code" : 110, "time" : ISODate("2017-08-15T09:06:07.042Z") }
{ "_id" : ObjectId("5992b97f0184ff511bf02bb3"), "tel" : 111, "code" : 111, "time" : ISODate("2017-08-15T09:06:07.046Z") }
{ "_id" : ObjectId("5992b97f0184ff511bf02bb4"), "tel" : 112, "code" : 112, "time" : ISODate("2017-08-15T09:06:07.084Z") }
{ "_id" : ObjectId("5992b97f0184ff511bf02bb5"), "tel" : 113, "code" : 113, "time" : ISODate("2017-08-15T09:06:07.133Z") }
{ "_id" : ObjectId("5992b9800184ff511bf02bb6"), "tel" : 114, "code" : 114, "time" : ISODate("2017-08-15T09:06:08.142Z") }
>

等到10秒以後(永遠不會那麼準確)鎖儲存的資料就會消失。這樣的特性在進行一些臨時資料儲存的時候非常有幫助。如果沒有這個特性,而使用關係型資料庫是非常麻煩的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144103/,如需轉載,請註明出處,否則將追究法律責任。

相關文章