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

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

WBOY
WBOYavant
2024-02-14 22:40:151040parcourir

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
    }
  })
};

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 ?

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 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.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"}}}
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer