在go中从mongo中获取普通json

时间:2018-01-28 11:45:20

标签: json mongodb go mgo

我正在尝试从go中的gopkg.in/mgo.v2获取一些数据并使用id。我在mongo中有一个嵌套数据。

注意:这是一个旧数据库,我无法更改结构,只想查询数据。

我的数据库包含字段namedetailsid。我必须根据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

Nameresult.Details打印正常,但即使有数据,... type Person struct { ... Details string `json:"details"` } 也会打印一个空字符串。我只想将json打印成字符串或者对json数据感到满意。

我也试过

:*:_t::T
t::SendRaw s

但仍然得到空字符串。 提前谢谢。

1 个答案:

答案 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指出我正确的方向。