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

如何使用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 关注
  • 303 浏览
慕课专栏
更多

添加回答

举报

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