我正在尝试从go
中的gopkg.in/mgo.v2
获取一些数据并使用id
。我在mongo中有一个嵌套数据。
注意:这是一个旧数据库,我无法更改结构,只想查询数据。
我的数据库包含字段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)
}
获取详细信息
我的代码:
Id
Name
和result.Details
打印正常,但即使有数据,...
type Person struct {
...
Details string `json:"details"`
}
也会打印一个空字符串。我只想将json打印成字符串或者对json数据感到满意。
我也试过
:*:_t::T
t::SendRaw s
但仍然得到空字符串。 提前谢谢。
答案 0 :(得分:2)
我很新。这看起来非常基本。密钥details
的值为JSON
修复是我将详细信息的类型更改为bson.M
这
type Person struct {
Name string
Id string
Details string
}
到
type Person struct {
Name string
Id string
Details bson.M
}
现在我可以访问
等详细信息res, err := json.Marshal(result.Details)
fmt.Println(string(res))
感谢@putu指出我正确的方向。