Search code examples
gomgo

Insert struct have array to Mongodb with Go


I want to insert datastruct like below to MongoDB

{ "rolecode": "DHBK1_ROLE_04", "functioncodelist": [ "DHBK1_FUNC_1", "DHBK1_FUNC_2", ..... "DHBK1_FUNC_n"] "productid": "ABC_Platform", "comid": "DHBK1" }

Here is my code:

package main
import (
    "context"
    "gopkg.in/mgo.v2"
)


func main() {
    insertObj()
}
type CompanyRoleFunction struct {
    Rolecode         string `json:"rolecode"`
    Productid        string `json:"productid"`
    Functioncodelist []string
    Comid string `json:"comid"`
}
func insertObj() {
    session, err := mgo.Dial("mongodb://casuser:Mellon@222.255.102.145:27017/users")
    if err != nil {
    panic(err)
    }
    c := session.DB("users").C("company_role_function")
    var companyRoleFunction CompanyRoleFunction
    companyRoleFunction.Rolecode = "DHBK1_ROLE_05"
    companyRoleFunction.Productid = "XYZ_Platform"
    companyRoleFunction.Comid = "DHBK1"
    err = c.Insert(companyRoleFunction)
    if err != nil {
        fmt.Println(err)
    }
}

My code have run but it only insert struct like this (of course, because I don't know how to handle array Functioncodelist )

[![enter image description here][1]][1]

Here is my data, I hope to insert

{"_id":{"$oid":"5ed0c2e2402a000037004c84"},"rolecode":"DHBK1_ROLE_07","functioncodelist":["DHBK1_FUNC_1","DHBK1_FUNC_2"],"productid":"ABC_Platform","comid":"DHBK1"}


Solution

  • It doesn't show up in the database because the document you inserted did not contain any values. Set a value in your go code and it should show up just fine in the database, unless I misinterpreted your question.

    ...
    type Functioncode string
    ...
    companyRoleFunction.Functioncodelist = make(map[string]Functioncode)
    ...
    companyRoleFunction.Functioncodelist["foo"] = "bar"
    ...
    

    See https://tour.golang.org/moretypes/19 for a quick introduction to go maps.