gpt4 book ai didi

mongodb - go mongodb driver and struct,发现大写和小写的困惑

转载 作者:IT王子 更新时间:2023-10-29 01:09:17 27 4
gpt4 key购买 nike

var Messages []Token
c2 := session.DB("mydatabase").C("pages")
query2 := c2.Find(bson.M{}).All(&Messages)
fmt.Print(Messages)

这是我的 Mongo DB 中的结构:

id_
pageUrl
token
pageId

我首先尝试了这样的结构:

type Token struct {
PageUrl string
Token string
PageId string
}

但只打印了 token ,可能是因为它都是小写的。其他两个字段未被检索,因为它们包含大写字母。然后我试了这个:

type Token struct {
PageUrl string `json: "pageUrl" bson: "pageUrl"`
Token string `json: "token" bson: "token"`
PageId string `json: "pageId" bson: "pageId"`
}

那些 bsonjson 是什么东西?我只是把它放在那里,因为我在互联网上看到过,但它不起作用,我仍然只得到 token 字段

更新嵌套文档的解决方案和测试示例

我看到没有关于这个问题的帖子所以记住解决方案是删除 json:bson: 之间的空格另外,为了帮助那些可能想知道如何为嵌套结构做这件事的人,我在这里给出了两个对我有用的结构:

type Token struct {
PageUrl string `json:"pageUrl" bson:"pageUrl"`
Token string `json:"token" bson:"token"`
PageId string `json:"pageId" bson:"pageId"`
}


type Message struct {
Sender struct {
Id string `json:"id" bson:"id"`
} `json:"sender" bson:"sender"`
Recipient struct {
Id string `json:"id" bson:"id"`
} `json:"recipient" bson:"recipient"`
Message struct {
Mid string `json:"mid" bson:"mid"`
Seq int `json:"seq" bson:"seq"`
Message string `json:"text" bson:"text"`
}
}

最佳答案

这些 jsonbson 的东西叫做 tags

我最好的猜测是,因为 Go 要求变量或函数通过大写第一个字符来公开,所以像 json 或 bson 这样的序列化框架需要结构将其第一个字符大写以暴露字段(以便它可以看到该字段).因此,暴露的字段名称应该用标签定义(以避免限制)。

bson:"token" 之间的空格似乎是导致问题的原因

我尝试了下面的代码片段,似乎工作正常。

type Token struct {
PageUrl string `json:"pageUrl" bson:"pageUrl"`
Token string `json:"token" bson:"token"`
PageId string `json:"pageId" bson:"pageId"`
}

关于mongodb - go mongodb driver and struct,发现大写和小写的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42081882/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com