为了账号安全,请及时绑定邮箱和手机立即绑定

高朗调查结果

高朗调查结果

Go
千巷猫影 2023-03-29 15:57:42
我试图在 MongoDB 中找到我的用户,但是当我运行这段代码时:type Person struct {    Id bson.ObjectId `bson:"_id,omitempty"`//`json:"id" bson:"_id,omitempty"`    username string `json:"username" bson:"username"`    score string `json:"score" bson:"score"`    level string `json:"level" bson:"level"`}result := Person{}var id = "5b8a45912ed6f24d945bee38"err = c.Find(bson.M{"_id":bson.ObjectIdHex(id)}).Select(bson.M{"username": 1, "score":1, "level": 1}).One(&result)fmt.Println(result)只是它告诉我:{ObjectIdHex("5b8a45912ed6f24d945bee38")   }并且不返回其他值!非常感谢您的参与!
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您必须导出所有受封送处理/解封处理的结构字段,因此将它们的名称更改为以大写字母开头:


type Person struct {

    Id       bson.ObjectId `bson:"_id,omitempty"`//`json:"id" bson:"_id,omitempty"`

    Username string        `json:"username" bson:"username"`

    Score    string        `json:"score" bson:"score"`

    Level    string        `json:"level" bson:"level"`

}

另请注意,要按 ID 查找文档,您可以使用Collection.FindId()


err = c.FindId(bson.ObjectIdHex(id)).

    Select(bson.M{"username": 1, "score":1, "level": 1}).One(&result)


查看完整回答
反对 回复 2023-03-29
?
白板的微信

TA贡献1883条经验 获得超3个赞

只是你应该在结构名称的第一个中使用大写字母!而且你也不需要

 Select(bson.M{"username": 1, "score":1, "level": 1})

你可以写 :

err = c.FindId(bson.ObjectIdHex(id)).One(&result)

祝你好运 :))


查看完整回答
反对 回复 2023-03-29
  • 2 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信