在 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)
并且仍然遇到同样的错误
它应该是
Units primitive.Decimal128 `json:"units"`
Run Code Online (Sandbox Code Playgroud)
这就是数据类型NumberDecimal
| 归档时间: |
|
| 查看次数: |
1179 次 |
| 最近记录: |