dev*_*ren 2 json go mongodb mgo
mongo我正在尝试从ingo和 using 中获取一些数据gopkg.in/mgo.v2。我在 mongo 中有一个嵌套数据。
注意:这是一个旧数据库,我无法更改其结构,只想查询数据。
id我有一个包含字段,name和 的数据库details。我必须根据id
我的代码获取详细信息:
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type Person struct {
Name string
Id string
Details string
}
func main() {
session, err := mgo.Dial("mongodb://localhost:27017/naren")
c := session.DB("naren").C("people")
result := Person{}
err = c.Find(bson.M{"id": "12345"}).One(&result)
if err != nil {
fmt.Println(err)
}
fmt.Println("Details:", result.Details)
fmt.Println("Name:", result.Name)
fmt.Println("Id:", result.Id)
}
Run Code Online (Sandbox Code Playgroud)
Id并且Name打印正常,但result.Details即使有数据也会打印空字符串。我只想将 json 打印为字符串或对 json 数据感到满意。
我也尝试过
...
type Person struct {
...
Details string `json:"details"`
}
Run Code Online (Sandbox Code Playgroud)
但仍然得到空字符串。提前致谢。
我很新。现在这看起来非常基本。detailskey的值为JSON
解决方法是我将详细信息类型更改为bson.M
从
type Person struct {
Name string
Id string
Details string
}
Run Code Online (Sandbox Code Playgroud)
到
type Person struct {
Name string
Id string
Details bson.M
}
Run Code Online (Sandbox Code Playgroud)
现在我可以访问详细信息,例如
res, err := json.Marshal(result.Details)
fmt.Println(string(res))
Run Code Online (Sandbox Code Playgroud)
感谢@putu 为我指明了正确的方向。
| 归档时间: |
|
| 查看次数: |
3664 次 |
| 最近记录: |