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?
Lulus satu dokumen (cth. bson.M
或bson.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.M
、bson.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!