为了账号安全,请及时绑定邮箱和手机立即绑定

golang mgo TTL 索引

golang mgo TTL 索引

Go
慕莱坞森 2021-11-29 17:03:11
如何使用 golang 和 mongodb 创建 TTL(生存时间)索引?这就是我目前尝试这样做的方式:sessionTTL := mgo.Index{    Key:         []string{"created"},    Unique:      false,    DropDups:    false,    Background:  true,    ExpireAfter: session_expire} // session_expire is a time.Durationif err := db.C("session").EnsureIndex(sessionTTL); err != nil {    panic(err)}但是,如果我使用以下方法查找:db.session.getIndexes()session_expire 设置为 5*time.Second。文档中的“创建”字段使用 time.Now() 设置为当前日期,因此我预计文档会在 5 秒后被删除。
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我试图使用这个问题的答案,但遇到了一个问题。考虑以下小改动:


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,


查看完整回答
反对 回复 2021-11-29
?
潇湘沐

TA贡献1816条经验 获得超6个赞

所以问题是我不得不放弃收藏。索引已经存在,因此没有使用到期约束重新创建它。


查看完整回答
反对 回复 2021-11-29
  • 2 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信