Maison > développement back-end > Golang > le corps du texte

Golang et MongoDB - J'ai essayé de mettre à jour le booléen vers mongodb en utilisant golang mais j'ai obtenu l'objet

WBOY
Libérer: 2024-02-14 22:40:15
avant
1010 Les gens l'ont consulté

Golang 和 MongoDB - 我尝试使用 golang 将切换布尔值更新为 mongodb,但得到了对象

Contenu de la question

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
    }
  })
};
Copier après la connexion

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
}
Copier après la connexion

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 ?

Solution de contournement

Transmettez un seul document (par exemple bson.Mbson.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, 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.Mbson.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"}}}
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal