首頁 > 後端開發 > Golang > 主體

Golang 和 MongoDB - 我嘗試使用 golang 將切換布林值更新為 mongodb,但得到了對象

WBOY
發布: 2024-02-14 22:40:15
轉載
827 人瀏覽過

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

問題內容

我曾經使用 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.Mbson.D)作為更新文檔,欄位名稱和值將按原樣(字面意思)解釋。

使用帶有更新的聚合管道,您必須傳遞一個數組作為更新文檔,這會觸發將其解釋為聚合管道。這是唯一的要求。此陣列可能是mongo.Pipeline, bson.A[]bson.D [ ]bson.M 甚至[]any,沒關係,它必須是Go 中的陣列或切片。這些元素可以是 bson.Mbson.D 或表示文件的任何其他值。

最簡單的解決方案:

filter := bson.M{"_id": id}
update := []any{
    bson.M{"$set": bson.M{"watched": bson.M{"$not": "$watched"}}}
}
登入後複製

以上是Golang 和 MongoDB - 我嘗試使用 golang 將切換布林值更新為 mongodb,但得到了對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!