gpt4 book ai didi

mongodb - 如何使用struct使用mongo-go-driver的更新功能

转载 作者:IT王子 更新时间:2023-10-29 02:06:59 25 4
gpt4 key购买 nike

mongo-go-driver的update函数可以这样调用。

filter := bson.D{"username", username}
update := bson.D{{"$set",
bson.D{
{"name", person.Name},
},
}}
result, err := collection.UpdateOne(ctx, filter, update)
type Person struct {
ID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
Username string `json:"username,omitempty" bson:"username,omitempty"`
Name string `json:"name,omitempty" bson:"name,omitempty"`
}

但是,我需要使用 person 结构调用更新函数,而不是像这样提及 person 结构的每个字段。

filter := bson.D{"username", username}
update := bson.D{{"$set", <<how to convert person struct to bson document?>>}}
result, err := collection.UpdateOne(ctx, filter, update)

如何将 person 结构转换为 bson 文档?

最佳答案

ReplaceOne 我想这就是你想要的:

        // Use it's ID to replace
filter := bson.M{"_id": existing.ID}
// Create a replacement object using the existing object
replacementObj := existing
replacementObj.SomeFieldToChange = "new-replacement-object"
updateResult, err := coll.ReplaceOne(context.Background(), filter, replacementObj)
assertNotErr(t, err)
assertEquals(t, 1, int(updateResult.ModifiedCount))

请注意,不再像在 mgo 中那样抛出 ErrNotFound - 您必须检查修改/更新计数。

关于mongodb - 如何使用struct使用mongo-go-driver的更新功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55904685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com