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

findOneAndUpdate(updateQuery, updateSet,)

findOneAndUpdate(updateQuery, updateSet,)

Go
千巷猫影 2023-07-17 16:22:11
我想更新数据库中的一些字段,并希望它返回一些字段,你能建议如何检索返回字段吗?所以我在这里使用,returnFields := map[string]interface{}{"order_id":1} data := FindAndUpdateVerticalsOffers(updateQuery, updateFields, returnFields)如何从“data”获取order_id:func FindAndUpdateVerticalsOffers(updateQuery map[string]interface{}, updateFields interface{}, returnFields map[string]interface{}) map[string]interface{} {    session := db.GetSession()    defer session.Close()    collection := session.DB("").C(VerticalsOffersName)    updateSet := bson.M{"$set": updateFields}    return collection.FindOneAndUpdate(updateQuery, updateSet, returnFields)}
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

我想更新数据库中的一些字段并希望它返回一些字段,

如果您使用mongo-go-driver(当前为 v1.1),您可以使用FindOneAndUpdate()来查找单个文档并更新它,返回原始文档或更新后的文档。

该方法接受FindOneAndUpdateOptions的参数,它支持投影。例如:

collection := client.Database("dbName").Collection("collName")


// Sets projection (or return fields)

findUpdateOptions := options.FindOneAndUpdateOptions{}

findUpdateOptions.SetProjection(bson.M{"order_id": 1})


result := collection.FindOneAndUpdate(context.TODO(), 

                                      bson.M{"foo":1}, 

                                      bson.M{"$set": bson.M{"bar":1}}, 

                                      &findUpdateOptions)


doc := bson.M{}

err = result.Decode(&doc)

上面的查询将匹配字段foo为 1 的文档,将字段更新为 1,并仅作为结果bar返回。order_id请注意,默认情况下_id也会返回该字段。您可以通过将_id 字段设置为 0 来禁止投影。

请注意,返回类型FindOneAndUpdate是SingleResult对象,它表示从操作返回的单个文档。如果操作返回错误,则ErrSingleResult 的方法将返回该错误。


查看完整回答
反对 回复 2023-07-17
  • 1 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

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