亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用golang在mongodb中findAndModify一條記錄?

如何使用golang在mongodb中findAndModify一條記錄?

Go
九州編程 2021-11-01 10:51:39
我想要這樣的東西:在 mongo db 中找到一條記錄 old_record將此記錄更新為 new_record返回 old_record我寫這樣的代碼:ret = nil// First, Find the objobj := &orm.QuerySetObj{}err2 := this.querySetCollection.With(session).Find(objKey).One(obj)if nil != err2 {    this.logger.Println("Error find obj")    return}ret = obj// Then, update this objobj.updateTime = time.Now().Unix()err3 := this.querySetCollection.With(session).Upsert(objKey, obj)if nil != err3 {    this.logger.Println("Error update obj")    return}return但是,我認為find并且update應該是一個atomic操作,所以我的代碼并不安全。我怎樣才能在原子操作中做到這一點
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

這里的方法是.Apply()采用Change類型并返回ChangeInfo。


文檔中的直接示例:


change := mgo.Change{

        Update: bson.M{"$inc": bson.M{"n": 1}},

        ReturnNew: false,

}

info, err = col.Find(M{"_id": id}).Apply(change, &doc)

fmt.Println(doc.N)

哪里doc是被發現的文件,并根據價值它的狀態ReturnNew在Change爭論,是false要將原來的文檔。


基本上所有參數的形式都與 .findAndModify()


查看完整回答
反對 回復 2021-11-01
  • 1 回答
  • 0 關注
  • 319 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號