ホームページ >バックエンド開発 >Golang >Go ドライバーを使用して MongoDB でネストされた OR/AND クエリ フィルターを作成する方法

Go ドライバーを使用して MongoDB でネストされた OR/AND クエリ フィルターを作成する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-26 22:15:11399ブラウズ

How to Create Nested OR/AND Query Filters in MongoDB with the Go Driver?

Go の MongoDB ネストされた OR/AND クエリ フィルター

MongoDB Go ドライバーを使用すると、$or と $ を使用して複雑なクエリ フィルターを作成できます。そしてオペレーター。ただし、これらのトップレベルの演算子内にネストされた演算子を作成する必要がある場合、ドライバーが bson.D 要素と bson.E 要素を使用するため、プロセスが少し混乱する可能性があります。

次の例は、その方法を示しています。ネストされた OR/AND クエリ フィルターを作成します:

package main

import (
    "context"
    "fmt"
    "time"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
)

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()

    client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
    if err != nil {
        panic(err)
    }
    defer client.Disconnect(ctx)

    collection := client.Database("test").Collection("people")

    // Create a nested OR/AND query filter
    filter := bson.D{
        {
            "$and", bson.A{
                bson.D{{"age", 30}},
                bson.D{{"$or", bson.A{
                    bson.D{{"name", "John"}},
                    bson.D{{"name", "Jane"}},
                }}},
            },
        },
    }

    // Find all people matching the filter
    cur, err := collection.Find(ctx, filter)
    if err != nil {
        panic(err)
    }
    defer cur.Close(ctx)

    // Iterate through the results and print each person's name
    for cur.Next(ctx) {
        var result bson.M
        if err := cur.Decode(&result); err != nil {
            panic(err)
        }
        fmt.Println(result["name"])
    }

    if err := cur.Err(); err != nil {
        panic(err)
    }
}

この例では:

  • トップレベル$and 演算子は、bson.D スライスで表されます。
  • $and 演算子の内の $or 演算子も、bson.D スライスで表されます。
  • $or 演算子の各条件は bson.D 要素で表されます。

$and 演算子がデフォルトであるため、明示的に指定する必要がないことに注意することが重要です。 それ。ただし、$and 内に他の演算子を入れ子にしたい場合は、bson.A スライスを使用して条件の配列を表す必要があります。

以上がGo ドライバーを使用して MongoDB でネストされた OR/AND クエリ フィルターを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。