ホームページ > バックエンド開発 > Golang > mongo-go-driver でネストされた OR/AND クエリ フィルターを構築するにはどうすればよいですか?

mongo-go-driver でネストされた OR/AND クエリ フィルターを構築するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-17 19:23:01
オリジナル
325 人が閲覧しました

How to Construct Nested OR/AND Query Filters in the mongo-go-driver?

mongo-go-driver のネストされた OR/AND クエリ フィルター

MongoDB では、複雑なクエリ フィルターに OR や AND などのネストされた論理演算子が含まれる場合があります。 mongo-go-driver を使用すると、これらのフィルターをプログラムで構築できます。

ネストされた論理演算子を使用する場合、ドライバーに必要な構造を理解することが重要です。たとえば、$or 演算子には、bson.A として表される条件の配列が必要です。一方、$and 演算子はデフォルトであり、明示的に指定する必要はありません。

AND 条件内に OR 条件がネストされたフィルターを作成する次の例を考えてみましょう。

filter := bson.M{
    "p": 10,
    "$and": bson.D{{"s", 30}, bson.M{"$or": bson.D{{"a", 1}}}}}
}
ログイン後にコピー

このコードは、AND 条件内で bson.M と bson.D を混合しようとしているため、エラーが発生します。これを修正するには、$or 条件に bson.A を使用し、不要な $and 演算子を削除する必要があります:

filter := bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.D{{"s", 30}},
        bson.D{{"a", 1}},
    }},
}
ログイン後にコピー

または、次の簡略化された構文を使用できます:

filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    },
}
ログイン後にコピー

この構文は、前の例と同じクエリ フィルターを作成します。構文の選択は、好みとクエリの複雑さによって異なります。

以上がmongo-go-driver でネストされた OR/AND クエリ フィルターを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート