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