database - Golang mgo 查找

标签 database mongodb go struct mgo

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

并且不要返回其他值!

非常感谢您的宝贵时间!

最佳答案

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

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)

关于database - Golang mgo 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146057/

相关文章:

google-app-engine - Google appengine,运行繁重的数据存储写入cron作业的最便宜的方式?

xml - 无法为 Go 结构解码 XML

sql-server - 请解释一下 SQL Azure "master"数据库

mysql - 对此批量删除的最佳查询是什么?

mongodb - 蒙哥 : find items that don't have a certain field

database-design - 针对特定用例的 MongoDB 模式设计

Golang 时间格式化为特定的时间戳

sql - 查询显示多对多关系中的关联列表

php - 如何禁用多对多关系的级联删除?

mysql - 如何将字段与Mongo中子文档的另一个字段进行匹配