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

使用 Go 和 mgo 解析 MongoDB 结果

使用 Go 和 mgo 解析 MongoDB 结果

Go
拉丁的传说 2022-01-10 19:10:00
我正在尝试解析来自 Go 的 MongoDB 查询的结果。由于以下原因,我有从我的数据库输出的文档:db.getCollection('People').find({}){    "_id" : ObjectId("5730fd75113c8b08703b5974"),    "firstName" : "George",    "lastName" : "FakeLastName"}{    "_id" : ObjectId("5730fd75113c8b08703b5975"),    "firstName" : "John",    "lastName" : "Doe"}{    "_id" : ObjectId("5730fd75113c8b08703b5976"),    "firstName" : "Jane",    "lastName" : "Doe"}这是我尝试使用的 Go 代码:package mainimport (    "fmt"    "log"    "gopkg.in/mgo.v2")type Person struct {    FirstName string `bson: "firstName" json: "firstName"`    LastName string `bson: "lastName json: "lastName"`}func main() {    session, err := mgo.Dial("10.0.0.89")    if err != nil {            panic(err)    }    defer session.Close()    // Optional. Switch the session to a monotonic behavior.    session.SetMode(mgo.Monotonic, true)    c := session.DB("PeopleDatabase").C("People")    var people []Person    err = c.Find(nil).All(&people)    if err != nil {            log.Fatal(err)    }    for _, res := range people{        fmt.Printf("Name: %v\n", res)    }}当我运行此代码时,我得到以下输出:Name: { }Name: { }Name: { }当使用 res.FirstName 代替 res 时,我只是得到一个空格来代替 {}。我已经阅读了以下位置的文档:https://labix.org/mgohttps://godoc.org/gopkg.in/mgo.v2#Collection.Findhttps://gist.github.com/border/3489566我将非常感谢可以提供的任何帮助。谢谢。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

删除标签中间的空格。


使用bson:"firstName"代替bson: "firstName"


type Person struct {

    FirstName string `bson:"firstName" json:"firstName"`

    LastName string `bson:"lastName json:"lastName"`

}

从https://golang.org/pkg/reflect/#StructTag 的文档,


按照惯例,标签字符串是可选用空格分隔的键:“值”对的串联。


所以键和值之间不应该有空格。不同的键和值对可以用空格分隔。


查看完整回答
反对 回复 2022-01-10
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号