解码 Mongo 128 位十进制到 Go

p3q*_*uod 3 go mongodb

在 Mongodb 中我有这个字段:

units: NumberDecimal('1'),
Run Code Online (Sandbox Code Playgroud)

映射到:

Units         float64 `json:"units"`
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下方式从 Go 读取数据:

    var result dbo.Invoice
    coll := client.Database("hobbit").Collection("customer")
    filter := bson.D{{"_id", code}}
    err = coll.FindOne(context.TODO(), filter).Decode(&result)
    if err != nil {
        if err == mongo.ErrNoDocuments {
            return model.Customer{}, fmt.Errorf("invoice %s not found", code)
        }
        return model.Customer{}, fmt.Errorf("reading invoice %s from database: %s", code, err)
    }
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

Error: error un-marshalling invoice F-3945: error decoding key lines.0.units: cannot decode 128-bit decimal into a float32 or float64 type
Run Code Online (Sandbox Code Playgroud)

我尝试使用bsoncodec注册转换:

registryBuilder := bsoncodec.NewRegistryBuilder()
registryBuilder.RegisterTypeMapEntry(bsontype.Decimal128, reflect.TypeOf(float64(0)))
Run Code Online (Sandbox Code Playgroud)

并且仍然遇到同样的错误

Ell*_*lie 5

它应该是

Units primitive.Decimal128 `json:"units"`
Run Code Online (Sandbox Code Playgroud)

这就是数据类型NumberDecimal