gpt4 book ai didi

go - Go的MongoDB独特查询和$ in

转载 作者:行者123 更新时间:2023-12-01 22:13:55 24 4
gpt4 key购买 nike

我在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"`
}
  • repository.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
    }
  • 最佳答案

    尝试以下代码以区分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)


    }

    关于go - Go的MongoDB独特查询和$ in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61814379/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com