首页 > 文章列表 > mongo-go-driver:嵌套的 OR/AND 查询过滤器?

mongo-go-driver:嵌套的 OR/AND 查询过滤器?

golang
151 2023-04-13

问题内容

mongo-go-driver:嵌套的 OR/AND 查询过滤器?

正确答案

mongo-go-driver是Go语言中MongoDB官方的驱动程序。要创建嵌套的OR / AND查询过滤器,可以使用bson.M类型的映射。

以下是一个示例,它创建了一个查询,以返回所有年龄为30或31的人,且名字为"John":

import (
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo/options"
)

func main() {
    filter := bson.M{
        "$and": []bson.M{
            bson.M{"name": "John"}, // 名字为John
            bson.M{"$or": []bson.M{
                bson.M{"age": 30}, // 年龄为30
                bson.M{"age": 31}, // 年龄为31
            }},
        },
    }

    options := options.Find()
    options.SetSort(bson.M{"age": -1}) // 可选,设置排序方式
    cursor, err := collection.Find(ctx, filter, options)
    // 处理错误并迭代游标
}

在这个示例中,我们使用bson.M类型来构建一个包含两个过滤器的AND过滤器,其中一个过滤器是通过OR逻辑连接两个年龄值的嵌套过滤器。我们还可以通过将options.Find().SetSort()方法与bson.M类型的映射一起使用,来指定结果的排序方式。