我正在尝试在 golang 中使用官方的 mongodb 驱动程序,但看到了一些意想不到的东西。
如果我有一个像
type User struct {
ID primitive.ObjectID `json:"id" bson:"_id"`
Name string `json:"name" bson:"name"`
Email string `json:"email" bson:"email"`
}
我用它创建了一个新实例,Name但Email省略了 ID,期望数据库将用它的值填充它。相反,它使用全零,因此第二个等插入失败
multiple write errors: [{write errors: [{E11000 duplicate key error collection: collection.name index: _id_ dup key: { : ObjectId('000000000000000000000000') }}]}, {<nil>}]
如果我使用 a*primitive.ObjectID我只会得到相同类别的错误null而不是零
multiple write errors: [{write errors: [{E11000 duplicate key error collection: collection.name index: _id_ dup key: { : null }}]}, {<nil>}]
我是否使用omitempty指令都没关系,相同的结果。
如果我完全省略该ID字段,它可以工作,但是我的结构上没有该数据。
有没有办法让数据库处理 ID?或者我必须明确调用NewObjectID()结构上的函数吗?
翻翻过去那场雪
慕的地6264312
相关分类