Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Golang dan MongoDB - Saya cuba mengemas kini togol boolean ke mongodb menggunakan golang tetapi mendapat objek itu

Golang dan MongoDB - Saya cuba mengemas kini togol boolean ke mongodb menggunakan golang tetapi mendapat objek itu

WBOY
WBOYke hadapan
2024-02-14 22:40:15950semak imbas

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

Kandungan soalan

Saya telah menggunakan React dan Nodejs untuk melaksanakan aplikasi todo. Fungsi pensuisan untuk mengemas kini pangkalan data Mongodb dalam React dan Nodejs adalah seperti berikut:

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

Saya ingin melaksanakan fungsi togol di Golang untuk mengemas kini medan boolean, tetapi saya mendapat objek, berikut ialah kod 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
}

Hasil dalam Mongodb dikemas kini sebagai objek dan bukannya boolean. Bagaimanakah saya boleh membetulkannya supaya ia mengemas kini togol boolean?

Penyelesaian

Lulus satu dokumen (cth. bson.Mbson.D) sebagai dokumen kemas kini dan nama dan nilai medan akan ditafsirkan sebagaimana adanya (secara literal).

Menggunakan Saluran Paip Pengagregatan dengan Kemas Kini a>, anda perlu menghantar tatasusunan sebagai dokumen kemas kini, yang mencetuskan tafsirannya sebagai saluran paip pengagregatan. Ini adalah satu-satunya keperluan. Tatasusunan mungkin mongo.Pipeline, bson.A[]bson.D []bson.M 甚至 []any,没关系,它必须是 Go 中的数组或切片。这些元素可以是 bson.Mbson.D atau sebarang nilai lain yang mewakili dokumen.

Penyelesaian paling mudah:

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

Atas ialah kandungan terperinci Golang dan MongoDB - Saya cuba mengemas kini togol boolean ke mongodb menggunakan golang tetapi mendapat objek itu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam