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 サイトの他の関連記事を参照してください。