[英]golang mgo TTL index
如何使用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秒钟后被删除。
所以问题是我不得不放弃收藏。 该索引已经存在,因此没有使用到期约束对其进行重新创建。
我试图使用该问题的答案,但遇到了问题。 考虑以下小的变化:
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,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.