我有一个GOLANG结构如下:
type OrgWhoAmI struct {
FriendlyName string `json:"friendlyName"`
RedemptionCode string `json:"redemptionCode"`
StartUrls []StartUrl `json:"startUrls"`
Status string `json:"status"`
Children []OrgChildren `json:"childrenReemptionCodes"`
}
type StartUrl struct {
DisplayName string `json:"displayName"`
URL string `json:"url"`
}
type OrgChildren struct {
FriendlyName string `json:"childFriendlyName"`
RedemptionCode string `json:"childRedemptionCode"`
}
我已经创建并成功将记录插入到MongoDB集合中(因为我可以通过CLI mongo程序查询Mongo来查看结果) - 但是当我用MGO查询如下时,我什么也得不到:
func main() {
session, sessionErr := mgo.Dial("localhost")
defer session.Close()
// Query All
collection := session.DB("OrgData").C("orgWhoAmI")
var results []OrgWhoAmI
err = collection.Find(bson.M{}).All(&results)
if err != nil {
panic(err)
}
for _, res := range results {
fmt.Printf("Result: %s|%s\n", res.FriendlyName, res.RedemptionCode)
}
}
打印的结果是:
结果:| 结果:| 结果:| 结果:|
如果我要求记录的计数,我会得到正确的数字,但所有字段的所有值都是空白的。不知道我在这里缺少什么。
答案 0 :(得分:7)
如果你没有在go中创建它们,它可能没有为你正确地序列化你的键名。 bson的默认值是小写键,因此如果需要其他内容,则需要指定它。另请注意,OrgWhoAmI
json:"childrenReemptionCodes"
中有一个拼写错误(应该是Redemption,我猜)。如果希望它们不同,可以单独指定bson和json。
type OrgWhoAmI struct {
FriendlyName string `bson:"friendlyName" json:"friendlyName"`
RedemptionCode string `bson:"redemptionCode" json:"redemptionCode"`
StartUrls []StartUrl `bson:"startUrls" json:"startUrls"`
Status string `bson:"status" json:"status"`
Children []OrgChildren `bson:"childrenRedemptionCodes" json:"childrenRedemptionCodes"`
}
type StartUrl struct {
DisplayName string `bson:"displayName" json:"displayName"`
URL string `bson:"url" json:"url"`
}
type OrgChildren struct {
FriendlyName string `bson:"childFriendlyName" json:"childFriendlyName"`
RedemptionCode string `bson:"childRedemptionCode" json:"childRedemptionCode"`
}