使用mgo适配器转到嵌套对象

时间:2015-12-27 10:35:46

标签: go mgo

我正在开发一个基于MongoDB数据结构的项目。存储在数据库中的对象如下所示:

{
"_id" : ObjectId("567a877df1c7720bea7c2f51"),
"username" : "dog",
"type" : "regular",
"data" : {
    "full" : {
        "xx" : "xx",
        "xx" : "xx",
        "yy" : {
            "xx" : "test"
        },
        "yy" : {
            "xx" : {

            }
        }
    }
}

我们使用Golang进行的结构看起来像这样:

type User struct {
    Id           bson.ObjectId `bson:"_id,omitempty"`
    username         string
    Type         string
    data struct {
        full struct {
            xx   string   `json:"xx"`
            xx string   `json:"xx"`
            xxx      struct{} `json:"xx"`
            yy    struct {

            } 
        } 
    } 
}

问题是,第一个属性填充数据没有任何问题,但对象内的对象不起作用。

我们提取数据的代码是我们在MGO文档中看到的常规代码。

err = collection.Find(bson.M{"username": username}).One(&user)

有没有以这种方式获取数据的具体方法?

1 个答案:

答案 0 :(得分:2)

我从手写这个jus。但是你必须记住大写名称字段和结构内的属性json形式。

type User struct {
    Id           bson.ObjectId `bson:"_id,omitempty"`
    Username         string
    Type         string
    Data struct { // Data nor data
        Full struct { // Full nor full
            Xx   string   `json:"xx"`  // Xx nor xx
            Xx string   `json:"xx"`    
            Xxx      struct{} `json:"xx"`
            Yy    struct {   // Yy nor yy

            }`json:"yy"` 
        } `json:"full"`
    } `json:"data"`
}

修改

另一个作品例子

go中的结构

type Event struct{

    EvL []struct {
        BaV int     `json:"basicV"`
        ChI int     `json:"chann"`
        DaU int     `json:"dataU"`

    } `json:"eventL"`

    ST int `json:"send.dat_ts"`
}

下面如何查看上面的结构写入DB

{ "_id" :

    ObjectId("560d422e65f47eef8a118cbd"),
    "evl" :
 [
    {
        "bav" : 255,
        "chi" : 14,
        "dau" : 0,
  ],
  "st" : 5
}