golang 使用mongo-go-dirver創建TTL索引, 過期自動刪除數據

數據庫: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的詳細介紹

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