Heim > Backend-Entwicklung > Golang > Golang und MongoDB – Ich habe versucht, Toggle Boolean mit Golang auf Mongodb zu aktualisieren, habe aber das Objekt erhalten

Golang und MongoDB – Ich habe versucht, Toggle Boolean mit Golang auf Mongodb zu aktualisieren, habe aber das Objekt erhalten

WBOY
Freigeben: 2024-02-14 22:40:15
nach vorne
1044 Leute haben es durchsucht

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

Frageninhalt

Ich habe React und Nodejs verwendet, um eine Todo-Anwendung zu implementieren. Die Umschaltfunktion zum Aktualisieren der Mongodb-Datenbank in React und Nodejs ist wie folgt:

const toggleChecked = ({ _id, isChecked }) => {
  TasksCollection.update(_id, {
    $set: {
      isChecked: !isChecked
    }
  })
};
Nach dem Login kopieren

Ich möchte die Umschaltfunktion in Golang implementieren, um das boolesche Feld zu aktualisieren, aber ich habe ein Objekt erhalten. Es folgt der Golang-Code:

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
}
Nach dem Login kopieren

Ergebnisse in Mongodb werden als Objekte statt als boolesche Werte aktualisiert. Wie kann ich das Problem beheben, sodass der boolesche Toggle-Wert aktualisiert wird?

Problemumgehung

Übergeben Sie ein einzelnes Dokument (z. B. bson.Mbson.D) als Aktualisierungsdokument und die Feldnamen und Werte werden so interpretiert, wie sie sind (wörtlich).

Mit der Aggregation Pipeline with Updates müssen Sie ein Array als Update-Dokument übergeben, was dessen Interpretation als Aggregation-Pipeline auslöst. Dies ist die einzige Voraussetzung. Das Array kann mongo.Pipeline, bson.A[]bson.D []bson.M 甚至 []any,没关系,它必须是 Go 中的数组或切片。这些元素可以是 bson.Mbson.D oder ein beliebiger anderer Wert sein, der das Dokument darstellt.

Einfachste Lösung:

filter := bson.M{"_id": id}
update := []any{
    bson.M{"$set": bson.M{"watched": bson.M{"$not": "$watched"}}}
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGolang und MongoDB – Ich habe versucht, Toggle Boolean mit Golang auf Mongodb zu aktualisieren, habe aber das Objekt erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage