gpt4 book ai didi

mongodb - 我如何在UpdateOne语句中进行“遗失”

转载 作者:行者123 更新时间:2023-12-01 22:24:48 25 4
gpt4 key购买 nike

我在体内收到一些字段,但是我有以下代码:

    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)

更新操作后,不应更新 EmailAge字段的值。

关于mongodb - 我如何在UpdateOne语句中进行“遗失”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60715770/

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