如何使用golang在mongodb中找到并修改一条记录?
发布时间:2020-12-16 19:04:18 所属栏目:大数据 来源:网络整理
导读:我想要这样的东西: 在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
我想要这样的东西:
>在mongo db old_record中找到一条记录 我写这样的代码: ret = nil // First,Find the obj obj := &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 obj obj.updateTime = time.Now().Unix() err3 := this.querySetCollection.With(session).Upsert(objKey,obj) if nil != err3 { this.logger.Println("Error update obj") return } return 但是,我认为查找和更新应该是一个原子操作,所以我的代码不安全. 我怎么能在原子操作中做到这一点
这里的方法是
.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是找到的文档,并且它的状态取决于Change参数中ReturnNew的值,在您想要原始文档的位置为f??alse. 基本上所有参数都与 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |