如何使用golang和mongodb创建TTL(生存时间)索引? 这就是我目前正在尝试的方式:
sessionTTL := mgo.Index{
Key: []string{"created"},
Unique: false,
DropDups: false,
Background: true,
ExpireAfter: session_expire} // session_expire is a time.Duration
if err := db.C("session").EnsureIndex(sessionTTL); err != nil {
panic(err)
}
但如果我使用以下方式查找:
db.session.getIndexes()
session_expire设置为5 * time.Second。使用time.Now()将文档中“创建”字段设置为当前日期,因此我希望文档在5秒后删除。
答案 0 :(得分:1)
所以问题是我不得不放弃这个集合。索引已存在,因此未使用到期约束重新创建。
答案 1 :(得分:0)
我试图使用这个问题的答案,并遇到了问题。考虑以下小改动:
sessionTTL := mgo.Index{
Key: []string{"created"},
Unique: false,
DropDups: false,
Background: true,
ExpireAfter: 60 * 60} // one hour
if err := db.C("session").EnsureIndex(sessionTTL); err != nil {
panic(err)
}
问题是,如果ExpireAfter
不是time.Duration
,则代码会自动失败。
我不得不改为: ExpireAfter:time.Duration(60 * 60)* time.Second,