douyuai8994 2019-05-02 01:14
浏览 38
已采纳

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

I want to access array values (access SpecCode) present in mongodb database from Go.

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`
}

using the following code:

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
  }

I have to get all values which have speccodes of userdetails in the collection topic_master. It's gin framework. This code is from models.

  • 写回答

1条回答 默认 最新

  • dqtiober37522 2019-05-02 09:04
    关注

    Just try like this

            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"`
    }
    

    and your function should be like this

            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
         }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改