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

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘