Golang读取MongoDB文档时Member的ObjectID解码为000000问题求助
问题原因与解决方案
你的问题出在Member结构体的ID字段bson标签配置错误。从文档结构来看,数组中每个Member对象的ID字段在MongoDB里存储的键是id,但你的结构体给ID字段指定的bson标签是_id,导致解码时无法匹配对应字段,最终解析为空的ObjectID(显示为000000)。而Quiz自身的ID能正常解析,是因为它对应的数据库字段确实是_id,标签配置正确。
修正后的代码
修改Member结构体的ID字段bson标签:
type Member struct { Name string `json:"name"` Email string `json:"email"` Password string `json:"password"` Response Response `json:"response"` ID primitive.ObjectID `json:"id" bson:"id"` // 将bson标签从"_id"改为"id" }
额外检查点
- 确认MongoDB中members数组内的每个对象ID字段键确实是
id(而非_id),若后续数据库结构变更,需同步调整结构体标签。 - 排查MongoDB Go驱动版本是否存在兼容性问题,若之前代码正常现在失效,版本更新可能导致解析逻辑变化,但核心原因仍是标签不匹配。
内容的提问来源于stack exchange,提问作者Ilay Bokobza
相关产品推荐
相关产品推荐

