为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB 不同的查询和 $in 与 Go

MongoDB 不同的查询和 $in 与 Go

Go
绝地无双 2022-06-01 18:23:44
我在 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"`     }存储库.gopackage repositoryimport "bitbucket.org/cloud-platform/vnpt-sso-usermgnt/model"type IProfileRepository interface {   FindRoleByUserProduct(string) (*model.CompanyRoleFunction, error)}mongo_driver.gopackage repositoryimport (    "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 }
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

尝试以下代码在 mgo 中区分


package main


import (

"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 []Result


func 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)



}


查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号