高朗调查结果
Golang mgo Finding
我试图在 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") }
并且不要 return 其他值!
非常感谢您的宝贵时间!
您必须导出所有受封送处理/解封处理的结构字段,因此将它们的名称更改为以大写字母开头:
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)
祝你好运:))
我试图在 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") }
并且不要 return 其他值!
非常感谢您的宝贵时间!
您必须导出所有受封送处理/解封处理的结构字段,因此将它们的名称更改为以大写字母开头:
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)
祝你好运:))