我曾經使用 React 和 Nodejs 來實作 todo 應用程式。 React 和 Nodejs 中更新 Mongodb 資料庫的切換功能如下程式碼:
const toggleChecked = ({ _id, isChecked }) => { TasksCollection.update(_id, { $set: { isChecked: !isChecked } }) };
我想在Golang中實現切換功能來更新布林字段,但我得到了對象,以下是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 }
Mongodb 中的結果更新為物件而不是布林值。我該如何修復以使其更新切換布林值?
傳遞單一文檔(例如 bson.M
或bson.D
)作為更新文檔,欄位名稱和值將按原樣(字面意思)解釋。
使用帶有更新的聚合管道 a>,您必須傳遞一個數組作為更新文檔,這會觸發將其解釋為聚合管道。這是唯一的要求。此陣列可能是mongo.Pipeline
, bson.A
,[]bson.D
, [ ]bson.M
甚至[]any
,沒關係,它必須是Go 中的陣列或切片。這些元素可以是 bson.M
、bson.D
或表示文件的任何其他值。
最簡單的解決方案:
filter := bson.M{"_id": id} update := []any{ bson.M{"$set": bson.M{"watched": bson.M{"$not": "$watched"}}} }
以上是Golang 和 MongoDB - 我嘗試使用 golang 將切換布林值更新為 mongodb,但得到了對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!