var Messages []Token
c2 := session.DB("mydatabase").C("pages")
query2 := c2.Find(bson.M{}).All(&Messages)
fmt.Print(Messages)
Run Code Online (Sandbox Code Playgroud)
这是我的 Mongo DB 中的结构:
id_
pageUrl
token
pageId
Run Code Online (Sandbox Code Playgroud)
我首先尝试了这样的结构:
type Token struct {
PageUrl string
Token string
PageId string
}
Run Code Online (Sandbox Code Playgroud)
但只打印了令牌,可能是因为它都是小写的。未检索其他两个字段,因为它们包含大写字母。然后我尝试了这个:
type Token struct {
PageUrl string `json: "pageUrl" bson: "pageUrl"`
Token string `json: "token" bson: "token"`
PageId string `json: "pageId" bson: "pageId"`
}
Run Code Online (Sandbox Code Playgroud)
bson那些是什么json?我只是把它放在那里,因为我在互联网上看到过,但它不起作用,我仍然只得到该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"`
}
}
Run Code Online (Sandbox Code Playgroud)
这些json东西bson称为标签
我最好的猜测是,因为 Go 要求通过大写第一个字符来公开变量或函数,所以像 json 或 bson 这样的序列化框架需要 struct 大写其第一个字符来公开字段(以便它可以看到该字段)。因此,应该使用标签定义公开的字段名称(以避免限制)。
bson:和之间的空格"token"似乎导致了问题
我尝试了以下代码片段,似乎工作正常。
type Token struct {
PageUrl string `json:"pageUrl" bson:"pageUrl"`
Token string `json:"token" bson:"token"`
PageId string `json:"pageId" bson:"pageId"`
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2421 次 |
| 最近记录: |