登录
首页 >  Golang >  Go问答

用户的选择具有灵活性

来源:stackoverflow

时间:2024-02-25 14:00:25 408浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《用户的选择具有灵活性》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我需要为用户创建一些变体,以便他只能选择那些他为其指定类别的用户(按类别搜索)或那些与数组中不具有相同类别的用户(在您的代码中)可以看到数组)。 我使用了文档并找到了这个答案:operator $ne

但这不起作用,我得到了所有用户的列表

func (r *Mongo) User(ctx context.Context, query *domain.Query) ([]*User, error) {
    var filter interface{}
    if query.Query != "" {
        filter = bson.D{primitive.E{Key: "status", Value: true}, primitive.E{Key: "category", Value: query.Query}}
    } else {
        filter = bson.D{primitive.E{Key: "status", Value: true}}
    } - this works

    if query.OtherCategory {
        category := []string{"it", "medical", "sport"}
        filter = bson.M{"status": true, "category": bson.M{"$ne": category}}
    } - this it is not works

    cursor, err := r.col.Find(ctx, filter, opts)

    var results []*domain.User
    if err = cursor.All(ctx, &results); err != nil {
        r.logger.Error().Err(err).Msg("failed find")
        return nil, err
    }

    return results, nil
}

如何进行查询以获取数组中没有这些(代码中的类别数组)类别且其状态为 true 的用户列表?


正确答案


$ne(“不等于”)将列出用户的 category 字段不是给定数组的文档。

但这不是您想要的:您想要列出用户没有给定类别的用户,或者换句话说,用户类别和给定类别的交集为空。

为此,您必须使用 $nin(“不在”)运算符:列出类别不在给定数组中的用户。对于数组字段,将检查所有数组元素。

if query.OtherCategory {
    category := []string{"it", "medical", "sport"}
    filter = bson.M{"status": true, "category": bson.M{"$nin": category}}
}

到这里,我们也就讲完了《用户的选择具有灵活性》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>