首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go/Mongo驱动程序:索引/查找未返回数据

Go/Mongo驱动程序:索引/查找未返回数据
EN

Stack Overflow用户
提问于 2021-09-14 09:50:05
回答 2查看 81关注 0票数 0

我可以使用我的查询来过滤/搜索特定的用户,我对此很满意。但是,它没有返回我期望的正确或完整的数据量,如下所示。我需要的传记和其他领域的数据被包括在内。即使我尝试了下面的答案,我仍然返回了错误的数据。这一定是我追加数据的方式?

代码语言:javascript
复制
type Profile struct {
    Username string

    Verified  bool
    Protected bool

    Avatar string
    Banner string

    FollowerCount  int32
    FollowingCount int32
    TreatCount     int32
    LikeCount      int32

    Name     string
    Bio      string
    Website  string
    Location string
}
代码语言:javascript
复制
func SearchProfiles(filter string) ([]models.Profile, error) {
    results := []models.Profile{}

    filterr := bson.D{{Key: "username", Value: primitive.Regex{Pattern: filter, Options: ""}}}

    cur, err := userColl.Find(ctx, filterr)
    if err != nil {
        log.Fatal().
            Err(err).
            Msg("err1")
    }

    for cur.Next(context.TODO()) {
        var elem models.Profile
        err := cur.Decode(&elem)
        fmt.Println(elem)
        if err != nil {
            log.Fatal().
                Err(err).
                Msg("err2")
        }
        results = append(results, elem)
    }

    if err := cur.Err(); err != nil {
        log.Fatal().
            Err(err).
            Msg("err3")
    }

    cur.Close(context.TODO())

    return results, nil
}

searchProfiles返回以下内容:

代码语言:javascript
复制
1:
avatar: ""
banner: ""
bio: ""
followerCount: 0
followingCount: 0
likeCount: 0
location: ""
name: ""
protected: false
treatCount: 0
username: "dev"
verified: false

getProfile返回以下内容:

代码语言:javascript
复制
...
profile:Object
username:"dev"
verified:false
protected:false
avatar:""
banner:""
followercount:163
followingcount:15
treatcount:13
likecount:612
name:"developer"
bio:"23, ayooo"
website:""
location:"afk"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-15 08:13:23

这就是我追加数据的方式!

代码语言:javascript
复制
func SearchProfiles(filter string) ([]models.Profile, error) {
    profiles := []models.Profile{}
    user := models.User{}

    filterr := bson.D{{Key: "username", Value: primitive.Regex{Pattern: filter, Options: ""}}}

    cur, err := userColl.Find(ctx, filterr)
    if err != nil {
        log.Fatal().
            Err(err).
            Msg("err1")
    }

    for cur.Next(context.TODO()) {
        err := cur.Decode(&user)
        if err != nil {
            log.Fatal().
                Err(err).
                Msg("err2")
        }
        profiles = append(profiles, user.Profile)
    }

    if err := cur.Err(); err != nil {
        log.Fatal().
            Err(err).
            Msg("err3")
    }

    cur.Close(context.TODO())

    return profiles, nil
}
票数 0
EN

Stack Overflow用户

发布于 2021-09-14 11:01:44

尝试向您的配置文件模型添加您需要从db返回的每个参数的额外描述,以便它们完全匹配。因此,如果你的模型带有参数'Name‘,并且在mongo文档中是'name’,那么你需要用'bson‘来映射它。例如:

代码语言:javascript
复制
type Profile struct {
  ***
  Name string `json:"name" bson:"name"`
  TreatCount int32  `json:"treatcount" bson:"treatcount"`
  ***
}

点击此处阅读更多信息:https://www.mongodb.com/blog/post/quick-start-golang--mongodb--modeling-documents-with-go-data-structures

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69175590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档