【发布时间】:2021-06-05 10:55:44
【问题描述】:
我有这个数据架构:
"person": { "name": "Neeraj", "hobbies": ["movies" ] }
这是在 MongoDB 中插入文档的结构
type Person struct {
Id primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
Name string `bson:"name,omitempty" json:"name,omitempty"`
Hobbies []string `json:"hobbies,omitempty" bson:"hobbies,omitempty"`
}
当在没有爱好字段的情况下调用 PUT person API 时,我希望它不会更新数据库中的爱好字段。在这种情况下,当我解析正文时,结构将爱好设置为 null,并且由于 'omitempty' bson 标记,它不会更新 DB 中的爱好字段,这很好。
filter := bson.D{{"_id", oid}}
update := bson.M{
"$set": record,
}
result, err := collection.UpdateOne(ctx, filter, update)
但是,当调用 PUT person API 并将 hobbies 字段设置为空数组时,我希望它会更新 hobbies 字段并将其设置为空。但是在这种情况下,记录结构也将 hobbies 字段设置为 null,并且它不会更新 hobbies 字段。
如何在 go 中执行此操作,以便我的代码满足所有后续更新负载?我正在使用golang official mongo driver。
{
"name": "john" // Should not modify the hobbies field.
}
{
"name": "john",
"hobbies": [] // // Should update the hobbies field to an empty array
}
【问题讨论】:
-
我得到了一些帮助,并且能够通过使用 *[]string 类型而不是 []string 来解决此问题。