定义这个结构
type SymbolMCAddrPort struct {
ID bson.ObjectId `bson:"_id,omitempty"`
Symbol string
MCAddr string
MCPort int
}
session, err := mgo.Dial("10.0.0.61")
if err != nil {
panic(err)
}
defer session.Close()
csap := session.DB("FX").C("MCAddrPortPairs")
如果我说
var resultsSMP bson.M
err = csap.Find(bson.M{"Symbol": "EUR/USD"}).One(&resultsSMP)
fmt.Println(resultsSMP)
我正确地看到
map[_id:ObjectIdHex("56fc34e961fed32064e656b0") Symbol:EUR/USD MCAddr:239.0.0.222 MCPort:345]
但是如果我说
resultsSMP := SymbolMCAddrPort{}
err = csap.Find(bson.M{"Symbol": "EUR/USD"}).One(&resultsSMP)
if err != nil {
panic(err)
}
fmt.Println(resultsSMP)
我只是看到
{ObjectIdHex("56fc34e961fed32064e656b0") 0}
我注意到ID是正确的,但是我无法获取结构中的其余字段?
最佳答案
type SymbolMCAddrPort struct {
ID bson.ObjectId `bson:"_id,omitempty"`
Symbol string `bson:"Symbol"`
MCAddr string `bson:"MCAddr"`
MCPort int `bson:"MCPort"`
}
根据Unmarshal的文档,
小写的字段名称用作每个导出字段的键,
但是可以使用相应的字段标签更改此行为。
因此,默认情况下,当您使用结构时,它期望键为字段名称的小写值。当密钥名称应为其他任何名称时,必须使用字段标签来指定密钥名称。
关于go - 将mongoDB集合查询到结构中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36409158/