Golang Go语言中关于 mongo model 的映射问题
Golang Go语言中关于 mongo model 的映射问题
使用的库是 https://github.com/mongodb/mongo-go-driver
model 定义
type MUser struct {
Id bson.ObjectId `bson:"_id,omitempty"`
CreateAt int64 `bson: "createtime"`
IsRemoved int `bson: "hasremoved"`
// 登录名
Name string `bson: "name"`
// 昵称
Nick string `bson: "nick"`
// 密码
PassWord string `bson: "password"`
Role string `bson: "role"`
Status int `bson: "status"`
}
为什么插入的数据是这个样子的?
{
"_id" : ObjectId("5f747b15dedcfdbb4c4ab599"),
"createat" : NumberLong(1601469205),
"isremoved" : 0,
"name" : "sample1",
"nick" : "nick",
"password" : "5f4dcc3b5aa765d61d8327deb882cf99",
"role" : "dev",
"status" : 0
}
请大家指点一下?
更多关于Golang Go语言中关于 mongo model 的映射问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
问题是啥?哪里不符合预期了?
更多关于Golang Go语言中关于 mongo model 的映射问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
#1 感觉他想说的是指定了 bson tag,但是没按照 tag value 来生成字段名…
我猜是空格……
#3 正解,冒号后有空格 IDE 都会提示的才对
还真的是这样。。
这命名看着真难受
在Golang中处理MongoDB的数据映射时,通常使用官方的MongoDB Go驱动程序(go.mongodb.org/mongo-driver/mongo
)以及一些ORM(对象关系映射)库,如mongo-go-driver/mongo-driver/mongo/options
或更高级的go.mongodb.org/mongo-driver/bson
等,来简化结构体与MongoDB文档之间的转换。
以下是一些关键点,帮助你解决Go语言中关于MongoDB model的映射问题:
-
定义结构体:首先,定义一个与MongoDB文档结构相匹配的结构体。使用bson标签来指定MongoDB中的字段名,如果Go结构体字段名与MongoDB文档字段名不一致,这点尤为重要。
-
使用bson.M或原始BSON类型:对于复杂的查询或更新操作,可以使用
bson.M
来构建动态的BSON文档,或者直接使用bson.Raw
类型处理未解析的BSON数据。 -
处理嵌入文档和数组:对于MongoDB中的嵌入文档和数组,可以直接在Go结构体中使用嵌套结构体和切片类型来表示。
-
错误处理:确保对MongoDB操作返回的错误进行适当处理,比如使用
context.Context
来管理请求的超时和取消。 -
使用ORM库(可选):虽然Go的MongoDB驱动已经很强大,但如果你更倾向于使用ORM风格,可以考虑使用像
mongo-go-driver/mongo-driver/x/mongo/driver/options
或社区驱动的ORM库,它们可以进一步简化数据访问层的代码。
总之,正确映射MongoDB模型到Go结构体,关键在于理解MongoDB的数据模型,并正确使用Go的bson库和MongoDB驱动。