數據庫:test_db, 數據表 test_table:
id |
content |
expire_date |
---|---|---|
1 | Good luck |
2019-03-01 08:14:58.000 |
2 | Good luck |
2019-03-02 08:14:58.000 |
3 | Good luck |
2019-03-03 08:14:58.000 |
4 | Good luck |
2019-03-04 08:14:58.000 |
5 | Good luck |
2019-03-05 08:14:58.000 |
6 | Good luck |
2019-03-06 08:14:58.000 |
示例代碼:
client = mongo.Connect(...)
// mongo-go-driver v0.1.0 使用如下代碼
indexModel := mongo.IndexModel{
Keys: bsonx.Doc{{"expire_date", bsonx.Int32(1)}}, // 設置TTL索引列"expire_date"
Options:mongo.NewIndexOptionsBuilder().ExpireAfterSeconds((1*24*3600)).Build(), // 設置過期時間1天,即,條目過期一天過自動刪除
}
// mongo-go-driver v0.3.0 使用如下代碼
indexModel := mongo.IndexModel{
Keys: bsonx.Doc{{"expire_date", bsonx.Int32(1)}}, // 設置TTL索引列"expire_date"
Options:options.Index().SetExpireAfterSeconds(1*24*3600), // 設置過期時間1天,即,條目過期一天過自動刪除
}
_, err := client.Database("test_db").Collection("test_table").Indexes().CreateOne(context.Background(), indexModel) // 創建TTL
if err != nil {
// 出錯處理
}
如果當前時間2019-03-02 08:15:58.000,則第一條記錄就會被自動刪除
Ref:
https://docs.mongodb.com/manual/core/index-ttl/ TTL index詳細介紹
https://docs.mongodb.com/manual/indexes/#index-types IndexModel中關於index type的詳細介紹