Golang mgo 查询中的空对象
在提供的代码中,当使用 col.Find(bson.M 查询 MongoDB 中的特定用户时{"user": username}).One(&user),user结构体被初始化为空对象。出现这种情况是因为 users 结构体的字段未导出,这导致 mgo 包忽略它们。
使用导出字段的解决方案
要解决此问题,您需要导出用户结构体的字段。默认情况下,从 MongoDB 访问字段时使用字段名称。但是,您可以使用标签来指定自定义字段映射。
这是带有导出字段和标签的修改后的结构:
type users struct { User string `bson:"user" json:"user"` Data string `bson:"data" json:"data"` }
现在,users 结构的字段已正确导出,并且查询将返回预期结果。
关于 BSON 和 JSON 的附加说明标签:
bson 和 json 标签分别用于指定 Go 结构体字段如何映射到 MongoDB 文档和 JSON 数据。 bson 标签指定 BSON 文档中的字段名称,json 标签指定 JSON 数据中的字段名称。
如果不指定标签,则默认使用结构体中的字段名称。但是,使用标签允许您自定义字段名称以与其他系统或约定兼容。
以上是为什么我的 Golang mgo 查询返回空用户对象?的详细内容。更多信息请关注PHP中文网其他相关文章!