mongodb - findOneAndUpdate(updateQuery, updateSet, returnFields) 的返回类型是什么,如何获取返回值?

标签 mongodb go

我想更新数据库中的一些字段,也想它返回一些字段,你能建议如何检索返回字段吗?

所以我在这里使用,

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)
}

最佳答案

I want to update some fields in DB and also want to it to return some fields,

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

该方法接受 FindOneAndUpdateOptions 的参数, 它支持 projection .例如:

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的文档,更新字段bar为1,结果只返回order_id .请注意,默认情况下还会返回 _id 字段。你可以suppress the _id field通过将其设置为 0 来避免投影。

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

关于mongodb - findOneAndUpdate(updateQuery, updateSet, returnFields) 的返回类型是什么,如何获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57711398/

相关文章:

node.js - 通过 _id 转换错误手动删除 connect-mongo session

go - 解析负载与 `serverless invoke local` 不同,然后在 APIGateway 后面部署时

go - 为什么将 <nil> 分配给 Go 中的接口(interface)类型是有效的?

java - 具有线性分布的 Group 和 Sum MongoDb 聚合框架

mongodb - 获取 mongo shell 脚本的输出

javascript - 如何获取前端代码的 mongodb 查询

go - Gin 框架无法从 Postman 获取数据

python - 如何使用 pymongo 在 Mongodb 中进行正则表达式搜索?

go - 在单个项目中使用不同版本的 go 包

go - 将两个返回值传递给一个参数的函数