J'ai utilisé React et Nodejs pour implémenter une application de tâches. La fonction de commutation de mise à jour de la base de données Mongodb dans React et Nodejs est la suivante :
const toggleChecked = ({ _id, isChecked }) => { TasksCollection.update(_id, { $set: { isChecked: !isChecked } }) };
Je souhaite implémenter la fonction bascule dans Golang pour mettre à jour le champ booléen, mais j'ai obtenu un objet, voici le code golang :
func updateOneMovie(movieId string) model.Netflix { id, _ := primitive.ObjectIDFromHex(movieId) filter := bson.M{"_id": id} update := bson.M{"$set": bson.M{"watched": bson.M{"$not": "$watched"}}} var updateResult model.Netflix result, err := collection.UpdateOne(context.Background(), filter, update) err = collection.FindOne(context.Background(), filter).Decode(&updateResult) if err != nil { log.Fatal(err) } fmt.Println(result) return updateResult }
Les résultats dans Mongodb sont mis à jour sous forme d'objets au lieu de booléens. Comment puis-je le réparer pour qu'il mette à jour le booléen de la bascule ?
Transmettez un seul document (par exemple bson.M
或bson.D
) comme document de mise à jour et les noms et valeurs des champs seront interprétés tels quels (littéralement).
En utilisant Pipeline d'agrégation avec mises à jour a>, vous devez transmettre un tableau comme document de mise à jour, ce qui déclenche son interprétation en tant que pipeline d'agrégation. C'est la seule exigence. Le tableau peut être mongo.Pipeline
, bson.A
,[]bson.D
, []bson.M
甚至 []any
,没关系,它必须是 Go 中的数组或切片。这些元素可以是 bson.M
、bson.D
ou toute autre valeur représentant le document.
Solution la plus simple :
filter := bson.M{"_id": id} update := []any{ bson.M{"$set": bson.M{"watched": bson.M{"$not": "$watched"}}} }
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!