「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MongoDB Go ドライバーを使用してネストされた OR/AND クエリを構築するにはどうすればよいですか?

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

2025 年 1 月 11 日に公開
ブラウズ:174

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 クエリを考えてみましょう:

{
  "$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 はデフォルトの論理演算子であるため、これを明示的にquery.

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3