Golang Go语言中如何修改 bson.Raw

发布于 1周前 作者 yibo5220 来自 Go语言

Golang Go语言中如何修改 bson.Raw

testM := bson.M{
“dict”: “v1”,
}
var raw bson.Raw
tmp, _ := bson.Marshal(testM)
bson.Unmarshal(tmp, &raw)

对 raw 进行修改,新增 key: document 为

bsonM{"dict":"v1", "key": document}

或者修改为

bson.M{"dict": "v2"}

又或者删除 key 为

bsonM{}

我没找到相关的文章,godoc 也看着没头绪

求问有啥办法可以做到对 bson.Raw 的增删改


更多关于Golang Go语言中如何修改 bson.Raw的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

最近在封装 mongodb 相关的库,这个包 go.mongodb.org/[email protected]/x/bsonx/bsoncore/document.go 里有你想要的东西

更多关于Golang Go语言中如何修改 bson.Raw的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中,bson.Raw 是 MongoDB BSON 库中的一个类型,用于表示原始的 BSON 数据。如果你想修改 bson.Raw 中的数据,你需要先将其解码(unmarshal)到一个具体的结构体或映射(map)中,进行所需的修改,然后再将其编码(marshal)回 BSON。

以下是一个简单的示例,展示了如何修改 bson.Raw 数据:

  1. 定义数据结构:首先,定义一个与 BSON 数据匹配的结构体。
type MyData struct {
    Field1 string `bson:"field1"`
    Field2 int    `bson:"field2"`
}
  1. 解码和修改
import (
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/bson/primitive"
    "log"
)

func modifyBSON(raw bson.Raw) (bson.Raw, error) {
    var data MyData
    err := bson.Unmarshal(raw, &data)
    if err != nil {
        return nil, err
    }
    
    // 修改数据
    data.Field1 = "NewValue"
    
    // 编码回 BSON
    modifiedRaw, err := bson.Marshal(data)
    if err != nil {
        return nil, err
    }
    
    return primitive.Raw(modifiedRaw), nil
}

注意,bson.Rawprimitive.Raw 是类型别名,可以互换使用。这个例子展示了如何将 bson.Raw 转换为 Go 的结构体进行修改,然后再转换回 bson.Raw。这是处理 BSON 数据时常见的模式。

回到顶部