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

在 Go 中序列化 MongoDB 数据时的空属性

在 Go 中序列化 MongoDB 数据时的空属性

Go
呼如林 2021-11-22 17:05:15
这可能是一个非常愚蠢的问题,但在网上搜索了两个小时后,我在这里发布了这个问题。我尝试学习 Go 并有一个非常简单的“Hello World”应用程序,它使用 Mongo 作为数据源。我可以正常连接,我可以获取数据,并且对象的数量还可以。问题是,我将数据映射到的对象具有空属性,尽管 Mongo 中有数据。我在 mongo 中有一个非常简单的集合,称为具有 ~12k 记录的站,如下所示:{ "_id" : ObjectId("563c8d56819c3c91076b7c13"), "nm" : "00000BE8" }{ "_id" : ObjectId("563c8d57819c3c91076b7c1a"), "nm" : "00000C01" }{ "_id" : ObjectId("563c8d58819c3c91076b7c1d"), "nm" : "00000C02" }{ "_id" : ObjectId("563c8d58819c3c91076b7c1f"), "nm" : "00000C31" }{ "_id" : ObjectId("563c8d5d819c3c91076b86c1"), "nm" : "000013E0" }{ "_id" : ObjectId("563c8d5d819c3c91076b86c5"), "nm" : "0000110B" }整个 Go 程序如下所示:package mainimport (    "log"    "gopkg.in/mgo.v2")type StationConfig struct {        id     string   `bson:"_id,omitempty"`        name   string   `bson:"nm"`}func main() {        session, err := mgo.Dial("192.168.1.41")        if err != nil {                panic(err)        }        defer session.Close()        c := session.DB("metos").C("stations")        var stationConfigs []StationConfig                    err = c.Find(nil).Limit(100).All(&stationConfigs)        if err != nil {                log.Fatal(err)        }        log.Printf("Found document: %+v\n", stationConfigs)}但是当我运行程序时,_id 和 nm 的值没有分配给各自的结构属性,我得到以下输出:Found document: [{id: name:} {id: name:} {id: name:} {id: name:}     {id: name:} {id: name:} {id: name:} {id: name:} {id: name:}     {id: name:} {id: name:} {id: name:} {id: name:} {id: name:}     {id: name:} {id: name:} {id: name:} {id: name:} {id: name:}     {id: name:} {id: name:} {id: name:} ... and so on ... ]我错过了什么?
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

我不熟悉 MongoDB Go API,但我认为您的结构字段应该是公开的,以便 MongoDB API 能够填充它们。


尝试公开您的字段,看看它是否有效:


type StationConfig struct {

        ID     string   `bson:"_id,omitempty"`

        Name   string   `bson:"nm"`

}


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信