首页 > 后端开发 > Golang > 如何使用 Go 驱动程序在 MongoDB 查询中构造嵌套逻辑运算符?

如何使用 Go 驱动程序在 MongoDB 查询中构造嵌套逻辑运算符?

Patricia Arquette
发布: 2024-11-19 01:17:02
原创
805 人浏览过

How to Construct Nested Logical Operators in MongoDB Queries with Go Driver?

使用嵌套逻辑运算符查询 MongoDB

在编写复杂的 MongoDB 查询时,有必要使用嵌套逻辑运算符,例如 AND 中的 OR 或反之亦然。然而,Go 的官方 MongoDB 驱动程序在构建此类查询时提出了挑战。

尝试使用 bson.D 创建分层查询过滤器时会出现问题,该过滤器需要 bson.E 元素。为了实现嵌套的 OR/AND 逻辑,人们可能会尝试将 bson.M 嵌套在 bson.D 中,如下例所示:

filter := bson.M{"$and": bson.D{{"p", 10}, bson.M{"$or": bson.D{{"s", 30}, {"a", 1}}}}}
登录后复制

但是,这种方法会导致错误:“cannot use Primitive” .M 文字(原始类型.M)作为切片文字中的原始类型.E。”

正确的方法是使用数组 (bson.A) 来表示 $or 并省略显式的 $and 运算符(即默认情况下暗示)。以下是创建嵌套过滤器的三个有效选项:

// Option 1
filter := bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.D{{"s", 30}},
        bson.D{{"a", 10}},
    }},
}

// Option 2
filter = bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    }},
}

// Option 3
filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    },
}
登录后复制

这些过滤器将正确表示嵌套逻辑表达式,并可用于从 MongoDB 集合检索数据。

以上是如何使用 Go 驱动程序在 MongoDB 查询中构造嵌套逻辑运算符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板