为集合中的过期数据设置 TTL
Setting TTL for expire data from collection
有没有使用official mongo driver? The only method that I found in the Mongo-driver module is ExpireAfterSeconds配置按键自删数据的正确方法,但不知道如何正确使用。
这是 repository 目前准备好的内容。
您需要在需要在n秒后删除的字段上创建一个ttl索引。
在下面的代码片段中,创建了一个可以设置 ttl 的 expirationTime 字段。从记录中设置的 expirationTime 起 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")
}
有没有使用official mongo driver? The only method that I found in the Mongo-driver module is ExpireAfterSeconds配置按键自删数据的正确方法,但不知道如何正确使用。 这是 repository 目前准备好的内容。
您需要在需要在n秒后删除的字段上创建一个ttl索引。
在下面的代码片段中,创建了一个可以设置 ttl 的 expirationTime 字段。从记录中设置的 expirationTime 起 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")
}