如何使用golang访问mongodb中存在的数组值?

时间:2019-05-02 01:14:15

标签: mongodb go

我想从golang访问mongodb数据库中存在的数组值(访问SpecCode)。

type MTopic struct {
    SpecCodes []struct {
        SpecCode string `json:speccode`
    }
    TopicCode    string `json:topiccode`
    TopicDesc    string `json:topicdesc`
    TopicBigDesc string `json:topicbigdesc`
    TopicSource  string `json:topicsource`
    TopicSources []struct {
        Topic string `json:topic`
    }
    CreatedBy string `json:createdby`
    CreatedOn string `json:createdon`
    UpdatedBy string `json:updatedby`
    UpdatedOn string `json:updatedon`
}

使用以下代码

func (m *TopicMaster) GetTopic(userdetails string) (list []MTopic, err error) {
    collection := dbConnect7.Use("masterdata", "topic_master")
    err = collection.Find(bson.M{"speccodes": userdetails}).All(&list)
    return list, err
  }

我必须获取在topic_master集合中具有用户详细信息规范代码的所有值。它的杜松子酒框架。这段代码来自模型。

1 个答案:

答案 0 :(得分:0)

  

就这样尝试

        type MTopic struct {
    SpecCodes []struct {
        SpecCode string `json:"speccode"`
    } `json:"speccodes"`
    TopicCode    string `json:"topiccode"`
    TopicDesc    string `json:"topicdesc"`
    TopicBigDesc string `json:"topicbigdesc"`
    TopicSource  string `json:"topicsource"`
    TopicSources []struct {
        Topic string `json:"topic"`
    }
    CreatedBy string `json:"createdby"`
    CreatedOn string `json:"createdon"`
    UpdatedBy string `json:"updatedby"`
    UpdatedOn string `json:"updatedon"`
}
  

您的功能应该是这样

        func (m *TopicMaster) GetTopic(userdetails string) (list []MTopic, err error) {
        collection := dbConnect7.Use("masterdata", "topic_master")
        findQ := bson.M{"speccodes.speccode": userdetails}
        list := make([]MTopic, 0)
        if err = collection.Find(findQ).All(&list); err != nil {
            err=errors.Wrapf(err, "failed to fetch topic info for user detail %s", userdetails)
            return nil, err
        }
        return list, err
     }