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
WBOYnach vorne
2024-02-14 22:40:151042Durchsuche

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

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
}

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen