猿问

golang mgo TTL 索引

如何使用 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 秒后被删除。


慕莱坞森
浏览 192回答 2
2回答

幕布斯7119047

我试图使用这个问题的答案,但遇到了一个问题。考虑以下小改动:sessionTTL := mgo.Index{    Key:         []string{"created"},    Unique:      false,    DropDups:    false,    Background:  true,    ExpireAfter: 60 * 60} // one hourif err := db.C("session").EnsureIndex(sessionTTL); err != nil {    panic(err)}这样做的问题是,如果ExpireAfter不是正确的time.Duration.我不得不更改为:ExpireAfter: time.Duration(60 * 60) * time.Second,

潇湘沐

所以问题是我不得不放弃收藏。索引已经存在,因此没有使用到期约束重新创建它。
随时随地看视频慕课网APP

相关分类

Go
我要回答