如何访问mongodb中的数组值?

如何访问mongodb中的数组值?,mongodb,go,Mongodb,Go,我想从Go访问mongodb数据库中的数组值(访问SpecCode) type MTopic struct { SpecCodes []struct { SpecCode string `json:speccode` } TopicCode string `json:topiccode` TopicDesc string `json:topicdesc` TopicBigDesc string `json:topicbigdes

我想从Go访问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
  }
我必须在集合主题_master中获取所有包含userdetails的speccode的值。这是杜松子酒框架。此代码来自模型。

请像这样尝试

        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
     }
你的函数应该是这样的

        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
     }