高朗调查结果

我试图在 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")   }


并且不返回其他值!


非常感谢您的参与!


千巷猫影
浏览 65回答 2
2回答

慕盖茨4494581

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

白板的微信

只是你应该在结构名称的第一个中使用大写字母!而且你也不需要 Select(bson.M{"username": 1, "score":1, "level": 1})你可以写 :err = c.FindId(bson.ObjectIdHex(id)).One(&result)祝你好运 :))
打开App,查看更多内容
随时随地看视频慕课网APP