我在体内收到一些字段,但是我有以下代码:
registro := bson.M{
"$set": bson.M{
"nombre": b.Nombre,
"apellidos": b.Apellidos,
"fechaNacimiento": b.FechaNacimiento,
"email": b.Email,
"password": passwordEncriptada,
"avatar": b.Avatar,
"banner": b.Banner,
"biografia": b.Biografia,
"domicilio": b.Domicilio,
"sitioWeb": b.SitioWeb,
},
}
objID, _ := primitive.ObjectIDFromHex(ID)
filtro := bson.M{"_id": bson.M{"$eq": objID}}
_, err := col.UpdateOne(ctx, filtro, registro)
if err != nil {
return false, err
}
这将导致MongoDB文档中的所有字段,但其中某些字段为空。
在
omitempty
期间如何做UpdateOne()
?问候
最佳答案
我如何在UpdateOne()期间做一个遗漏?
您可以在传递到更新语句之前先构建一个结构。更新语句将在传递之前通过bson.Marshal()进行传递。例如,如果您具有以下结构:
type Test struct {
Banner string `json:"banner" bson:"banner,omitempty"`
Email string `json:"email" bson:"email,omitempty"`
Avatar string `json:"avatar" bson:"avatar,omitempty"`
Age int32 `json:"age" bson:"age,omitempty"`
}
您可以如下构建更新的结构:
filter := bson.M{}
foo := Test{Banner:"updated", Avatar:"updated", Email:"", Age:0}
statement := bson.M{"$set": foo}
result, err := collection.UpdateOne(ctx, filter, statement)
更新操作后,不应更新
Email
和Age
字段的值。
关于mongodb - 我如何在UpdateOne语句中进行“遗失”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60715770/