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

2024年 2月 14日 83.3k 0

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)作为更新文档,字段名称和值将按原样(字面意思)解释。

使用带有更新的聚合管道 a>,您必须传递一个数组作为更新文档,这会触发将其解释为聚合管道。这是唯一的要求。该数组可能是 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,但得到了对象的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论