Mongodb findOneAndUpdate的返回类型是什么(updateQuery、updateSet、returnFields),以及如何获取返回的值?

Mongodb findOneAndUpdate的返回类型是什么(updateQuery、updateSet、returnFields),以及如何获取返回的值?,mongodb,go,Mongodb,Go,我想更新数据库中的一些字段,还想让它返回一些字段,您能建议如何检索返回字段吗 所以我在这里用 returnFields := map[string]interface{}{"order_id":1} data := FindAndUpdateVerticalsOffers(updateQuery, updateFields, returnFields) 如何从“数据”中获取订单id: func FindAndUpdateVerticalsOffers(updateQuery map[st

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

所以我在这里用

returnFields := map[string]interface{}{"order_id":1} 

data := FindAndUpdateVerticalsOffers(updateQuery, updateFields, returnFields)
如何从“数据”中获取订单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)
}
我想更新数据库中的一些字段,还想让它返回一些字段

如果您正在使用(当前版本为v1.1),则可以使用查找单个文档并对其进行更新的,返回原始文档或更新的文档

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

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\u id
。请注意,默认情况下也会返回
\u id
字段。通过将其设置为0,可以避免被投影

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