ホームページ > バックエンド開発 > Golang > MongoDB Go ドライバーを使用してネストされた OR/AND クエリを構築するにはどうすればよいですか?

MongoDB Go ドライバーを使用してネストされた OR/AND クエリを構築するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-01 15:33:11
オリジナル
210 人が閲覧しました

How to Construct Nested OR/AND Queries with the MongoDB Go Driver?

MongoDB Go ドライバーを使用したネストされた論理クエリ

MongoDB クエリでは、多くの場合、ネストされた論理演算子 (AND/OR) を使用してドキュメントをフィルタリングする必要があります。複数の基準で。 Go MongoDB ドライバーでは、bson.D および bson.M タイプを使用してネストされた論理クエリを構築できます。

ネストされた OR/AND クエリの構築

ネストされた OR/AND クエリの場合、bson.D 型を使用して外部論理演算子 ($and など) を表し、渡す必要があります。 bson.E 要素をそれに追加します。各 bson.E 要素はフィールドと値のペアを表します。フィールド名は論理演算子 ($or など)、値は bson.D または bson.A (配列の場合) です。

ネストされた OR/AND クエリの例

MongoDB について考えてみましょうquery:

{
  "$and": {
    "p": 10,
    "$or": {
      "s": 30,
      "a": 1
    }
  }
}
ログイン後にコピー

MongoDB ドライバーを使用して Go でこのクエリを表すには、次のコードを使用できます。

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

この例では、bson.D は外側の $ を表します。 and 演算子であり、bson.A はネストされた $or 演算子を表します。 $or 内の各 bson.D はサブクエリを表します。

ネストされたクエリに bson.M を使用する

bson.M 型を使用してサブクエリを表すこともできます。ネストされたクエリ。 bson.M は、フィールド名とそれに対応する値を含めることができるマップ[文字列]インターフェイス{}です。値は、ネストされたクエリを表す別の bson.M インスタンスにすることができます。

たとえば、上記のクエリは、bson.M を使用して次のように表すことができます。

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

  • 論理演算子内の配列を表すには、bson.A を使用します (例: bson.A{bson.M{"foo": 1}}).
  • $and はデフォルトの論理演算子であるため、クエリに明示的に含める必要はありません。

これらのガイドラインに従うことで、MongoDB ドライバーを使用して Go でネストされた OR/AND クエリを効率的に作成できます。

以上がMongoDB Go ドライバーを使用してネストされた OR/AND クエリを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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