为收集的过期数据设置TTL

时间:2019-03-11 13:19:30

标签: mongodb go ttl

是否有使用official mongo driver通过密钥配置数据自删除的正确方法?我在Mongo驱动程序模块中找到的唯一方法是ExpireAfterSeconds,但是我不确定如何正确使用它。 这是repository,目前已准备就绪。

1 个答案:

答案 0 :(得分:1)

您需要在字段上创建一个ttl索引,该索引需要在n秒后删除。

在下面的代码片段中,创建了一个expirationTime字段,可以在上面设置ttl。从记录中设置的到期时间起60秒后,记录将被删除。

以下是创建TTL索引的代码:

var ttl *int32
    *ttl = 60
    keys := bsonx.Doc{{Key: "expirationTime", Value: bsonx.Int32(int32(1))}}
    idx := mongo.IndexModel{Keys: keys, Options: &options.IndexOptions{ExpireAfterSeconds: ttl}}
    _, err := collection.Indexes().CreateOne(context.Background(), idx)
    if err != nil {
        fmt.Println("Error occurred while creating index", err)
    } else {
        fmt.Println("Index creation success")
    }