查找Golang氧化镁(Golang mgo Finding)

2019-10-28 20:17发布

我试图找到我的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") }

而且不返回其他值!

非常感谢您的参与!

Answer 1:

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

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

你可以写 :

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

祝好运 :))



Answer 2:

你要出口受编组/解组所有结构域,因此改变自己的名字开始与大写字母:

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)


文章来源: Golang mgo Finding