findOneAndUpdate(updateQuery, updateSet,)

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


所以我在这里使用,


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)

}


千巷猫影
浏览 58回答 1
1回答

qq_遁去的一_1

我想更新数据库中的一些字段并希望它返回一些字段,如果您使用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 的方法将返回该错误。
打开App,查看更多内容
随时随地看视频慕课网APP