Maison >développement back-end >Golang >Le pilote MongoDB GO écrase les données existantes
l'éditeur php Banana apporte l'introduction d'un nouveau pilote MongoDB GO couvrant les données existantes. En tant que base de données NoSQL populaire, MongoDB gagne en popularité parmi les développeurs. Ce nouveau pilote offre un moyen flexible et efficace de manipuler les données dans MongoDB. Il prend en charge diverses opérations de requête et de mise à jour tout en fournissant également des fonctionnalités avancées telles que le traitement des transactions et l'agrégation de données. En utilisant ce pilote, les développeurs peuvent facilement interagir avec MongoDB dans les projets GO, permettant un développement rapide et des performances élevées. Qu'il s'agisse d'un projet nouveau ou existant, ce pilote offre aux développeurs une meilleure expérience de manipulation des données. Que vous soyez débutant ou développeur expérimenté, ce pilote sera votre meilleur choix.
J'utilise go-fiber
并使用 mongodb
le pilote mongodb go.
Je souhaite uniquement mettre à jour les champs donnés par le corps. Mais cela écrase les données.
func UpdateOneUser(c *fiber.Ctx) error { params := c.Params("id") body := new(models.User) id, err := primitive.ObjectIDFromHex(params) if err != nil { return c.Status(500).SendString("invalid onjectid") } if err := c.BodyParser(&body); err != nil { return c.Status(400).SendString("invalid body") } filter := bson.M{"_id": id} update := bson.M{"$set": bson.M{ "name": body.Name, "username": body.Username, "first_name": body.FirstName, "last_name": body.LastName, "email": body.Email, "phone_number": body.PhoneNumber, "contry": body.Contry, "age": body.Age, "child_accounts": body.ChildAccounts, "groups": body.Groups, }} result, err := db.User.UpdateOne(context.Background(), filter, update) if err != nil { return c.Status(500).SendString("user not found") } fmt.Println(result) return c.JSON(body) }
Si le pilote fonctionne ainsi, veuillez m'indiquer une meilleure façon de mettre à jour la documentation. L'opérateur
$set
couvrira tous les champs que vous spécifiez, vous devez donc créer de manière sélective votre instruction de mise à jour :
fields:=bson.m{} if body.name!="" { fields["name"]=body.name } ... update:=bson.m{"$set":fields}
Quelques raccourcis que vous pouvez utiliser :
fields:=bson.M{} add:=func(key,value string) { if value!="" { fields[key]=value } } add("name",body.Name) add("userName",body.UserName)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!