簡體   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