猿问

MongoDB 不同的查询和 $in 与 Go

我在 MongoDB 中的不同查询遇到问题。


我可以在 Mongo shell 中编写它,它可以工作,但我不知道如何在 Go 代码中实现它。


这是我的 Mongo shell 代码


db.getCollection('company_role_function').distinct("rolecode", {rolecode : {

   $in: ['DHBK_ROLE_01','DHBK_ROLE_03' ] },productid:'IOT_Platform'

})

这是我的 Go 代码


1.profile.go


    type CompanyRoleFunction struct {

        Rolecode     string `json:"rolecode"`

        Productid    string `json:"productid"`

        Functioncode string `json:"functioncode"`

        Comid        string `json:"comid"`

     }

存储库.go


package repository

import "bitbucket.org/cloud-platform/vnpt-sso-usermgnt/model"

type IProfileRepository interface {

   FindRoleByUserProduct(string) (*model.CompanyRoleFunction, error)

}

mongo_driver.go


package repository

import (

    "bitbucket.org/cloud-platform/vnpt-sso-usermgnt/model"

    "go.mongodb.org/mongo-driver/bson"

    "gopkg.in/mgo.v2"

)

type ProfileRepositoryMongo struct {

  db         *mgo.Database

  collection string

 }


 func NewProfileRepositoryMongo(db *mgo.Database, collection string) *ProfileRepositoryMongo {

    return &ProfileRepositoryMongo{

    db:         db,

    collection: collection,

   }

}

//I HAVE TROUBLE HERE

 func (r *ProfileRepositoryMongo) FindRoleByUserProduct(rolecode arr[]string)  (*model.CompanyRoleFunction, error) {

  var companyRoleFunction model.CompanyRoleFunction

   //I HAVE TROUBLE HERE

  err := r.db.C(r.collection).Find(bson.M{"username": username}).One(&companyRoleFunction)

   //I HAVE TROUBLE HERE

  if err != nil {

      return nil, err

   }

  return &companyRoleFunction, nil

 }


绝地无双
浏览 260回答 1
1回答

料青山看我应如是

尝试以下代码在 mgo 中区分package mainimport ("context""fmt""time""go.mongodb.org/mongo-driver/bson""go.mongodb.org/mongo-driver/mongo""go.mongodb.org/mongo-driver/mongo/options""gopkg.in/mgo.v2")type Result struct {Rolecode string `json:"rolecode"`Productid string `json:"productid"`Functioncode string `json:"functioncode"`Comid string `json:"comid"`}type Results []Resultfunc main() {//delete1("GV_BMVT")//update("GV_BMVT")check()}func check() {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")results := []string{}roleArray := []string{"DHBK_ROLE_01,", "DHBK_ROLE_03"}err = c.Find(bson.M{"rolecode": bson.M{"$in": roleArray}, "productid": "IOT_Platform"}).Distinct("rolecode", &results)if err != nil {panic(err)}fmt.Println(results)}
随时随地看视频慕课网APP

相关分类

Go
我要回答