Object Golang中Object内的对象

时间:2017-02-28 15:51:48

标签: mongodb go

我试图在mongoDB中创建嵌套对象但没有运气我想要实现的格式如下

 "Courses":{
    "Date":{
      "CourseName"  :{
                "hole 1"{

                }
                "hole 2"{

                }
                ...so on until 18 
               }//coursename
             }//date 
          }//courses

通过执行以下操作,我已经尝试并成功获取日期对象:

u := req.FormValue("username")
co := req.FormValue("course")
d := req.FormValue("date")

ng := nGame{Username: u, Course: co, Dates: d}
cn := courseName{CName: co}
query := bson.M{"username": u}
update := bson.M{"$push": bson.M{"Course": bson.M{ng.Dates: cn}}}  
err = c.Update(query, update)

日期对象里面有课程名称我想要做的是让课程命名另一个对象然后我可以插入空洞对象。

我使用的Structs如下:

type (
nGame struct {
    Username string
    Course   string
    Location string
    Dates    string
}
)
type (
courseName struct {
    CName string
}
)

1 个答案:

答案 0 :(得分:2)

根据我的理解,您描述的结构可以在Go中表示如下:

type Hole struct {
    // Whatever you want here
}

type Course struct {
    Hole1 Hole `json:"hole 1"`
    Hole2 Hole `json:"hole 2"`
    // ...
    Hole18 Hole `json:"hole 18"`
}

type Courses struct {
    //  Date       CourseName
    map[string]map[string]Course
}

但是,我会建议你使用一个18元素的阵列作为你的洞,但这取决于你:

type Course struct {
    Holes [18]Hole
}

然后你可以将这些树中的一个实例化为(使用[18]Hole数组;如果你使用不同的实现,则相应调整):

courses := Courses{
    map[string]map[string]Course{
        "2017-01-01": map[string]Course{
            "Bob's Course": Course{
                [18]Hole{
                    Hole{
                      // Hole 1
                    },
                    Hole{
                      // Hole 2
                    },
                    // ..
                },
            },
        },
    },
}