Capped Collections
// Create capped collection (100000 bytes and max 10 entries)
> db.createCollection("ring_buffer",{"capped":true,"size":100000,"max":10})
{ "ok" : 1 }
// insert more than 10 messages
> db.ring_buffer.insert({"message":1})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":2})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":3})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":4})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":5})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":6})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":7})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":8})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":9})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":10})
WriteResult({ "nInserted" : 1 })
> db.ring_buffer.insert({"message":11})
WriteResult({ "nInserted" : 1 })
// list collection, only rest 10 entries
> db.ring_buffer.find()
{ "_id" : ObjectId("5f7d7b1b4db79b5cc8c54240"), "message" : 2 }
{ "_id" : ObjectId("5f7d7b1d4db79b5cc8c54241"), "message" : 3 }
{ "_id" : ObjectId("5f7d7b204db79b5cc8c54242"), "message" : 4 }
{ "_id" : ObjectId("5f7d7b234db79b5cc8c54243"), "message" : 5 }
{ "_id" : ObjectId("5f7d7b264db79b5cc8c54244"), "message" : 6 }
{ "_id" : ObjectId("5f7d7b274db79b5cc8c54245"), "message" : 7 }
{ "_id" : ObjectId("5f7d7b2a4db79b5cc8c54246"), "message" : 8 }
{ "_id" : ObjectId("5f7d7b2c4db79b5cc8c54247"), "message" : 9 }
{ "_id" : ObjectId("5f7d7b2e4db79b5cc8c54248"), "message" : 10 }
{ "_id" : ObjectId("5f7d7b304db79b5cc8c54249"), "message" : 11 }
Time-To-Live Indexes
Time-To-Live index need config in Date data type.
After “expireAfterSeconds”, the data will be deleted
// create index for Date type with “expireAfterSeconds” attributes
> db.users.createIndex({"date":1},{"expireAfterSeconds":5})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
// update users with date
> db.users.updateOne({"name":"user164"},{"$set":{"date":new Date()}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
// after 5 seconds, the records will be deleted
沒有留言:
張貼留言