登录
首页 >  Golang >  Go问答

使用结构体和 MongoDB 的 Go 语言驱动更新/替换 MongoDB 文档

来源:stackoverflow

时间:2024-03-15 21:42:25 274浏览 收藏

在使用 Go 语言驱动程序操作 MongoDB 文档时,可以通过结构体更新或替换文档。其中,更新语句必须以 "$" 开头,表示更新运算符。在 go.mongodb.org/mongo-driver 包中,语法更为简洁,可以使用 $set 运算符将文档更新为指定结构体。

问题内容

我正在尝试使用结构更新/替换 mongodb 文档,但我不断收到 err: 更新文档必须包含以 '$' 开头的密钥

collection := r.client.Database(database).Collection(greetingCollection)
payment.MongoID = objectid.New()
filter := bson.NewDocument(bson.EC.String("id", payment.ID))
_, err := collection.UpdateOne(ctx, filter, payment)
return err

解决方案


您应该提供更新语句而不是文档作为 Collection.UpdateOne 方法的第三个参数。例如:

update := bson.newdocument(
    bson.ec.subdocumentfromelements(
        "$set",
        bson.ec.double("pi", 3.14159),
    ),
)
collection.updateone(ctx, filter, update)

查看 MongoDB docs 中可用更新运算符的更多信息(键以“$”开头)。

我相信接受的答案对我不起作用,因为我正在使用 go.mongodb.org /mongo-driver 包。有了这个包,语法就更简单了:

update := bson.M{
        "$set": yourDocument,
    }

collection.UpdateOne(ctx, filter, update)

理论要掌握,实操不能落!以上关于《使用结构体和 MongoDB 的 Go 语言驱动更新/替换 MongoDB 文档》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>