繁体   English   中英

golang mgo TTL指数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM