Docs Menu
Docs Home
/ / /
Java 同期
/ /

クエリを指定する

項目一覧

  • Overview
  • 比較演算子
  • 論理演算子
  • 配列演算子
  • 要素演算子
  • 評価演算子

このガイドでは、MongoDB Java ドライバーでクエリを指定する方法を学習できます。

ほとんどの CRUD 操作では、クエリフィルターで一致基準を指定することにより、一致するドキュメントのセットを絞り込むことができます。 クエリフィルターには、結果セットに含めるドキュメントを決定する特定のフィールドに適用される 1 つ以上のクエリ演算子が含まれます。

このページでは、次のクエリ演算子について、使用例とともに説明します。

このガイドの例では、 paint_purchasesコレクション内の次のドキュメントを使用します。

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }
{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

比較演算子は、コレクション内の値との比較に基づいてデータをクエリします。 一般的な比較演算子として、「~より大きい」という比較のためのgt() 、「~以下」という比較のためのlte() 、「~と等しくない」という比較のためのne()などが挙げられます。

次の例では、 Filters.gt()メソッドを使用して、 paint_purchasesコレクション内のqtyの値が7より大きいすべてのドキュメントを照合します。

Bson filter = Filters.gt("qty", 7);
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

次に、前のクエリの出力を示します。

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

論理演算子は、フィールド レベルの演算子の結果に適用されたロジックを使用してデータをクエリします。 よく使用される論理演算子には、すべての演算子が true でなければならないand()と、演算子のうち少なくとも 1 つが true でなければならないor()などがあります。

次の例では、 Filters.and()メソッドを使用して、 qtyの値が5以下で、かつcolor "pink"でないドキュメントをpaint_purchasesコレクション内で照合します。

Bson filter = Filters.and(Filters.lte("qty", 5), Filters.ne("color", "pink"));
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

次に、前のクエリの出力を示します。

{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }

配列演算子は、配列フィールド内の要素の値または量に基づいてデータをクエリします。

次の例では、 Filters.size()メソッドを使用して、 paint_purchasesコレクション内でvendorリストのサイズが3であるドキュメントをマッチングしています。

Bson filter = Filters.size("vendor", 3);
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

次に、前のクエリの出力を示します。

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

要素演算子は、フィールドの存在または型に基づいてデータをクエリします。

次の例では、 Filters.exists()メソッドを使用して、 paint_purchasesコレクション内にratingを持つドキュメントを照合します。

Bson filter = Filters.exists("rating");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

次に、前のクエリの出力を示します。

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

評価演算子は、正規表現やテキスト検索などの高レベルのロジックでデータをクエリします。

次の例では、 Filters.regex()メソッドを使用して、 paint_purchasesコレクション内で文字"k"で終わるcolorを持つドキュメントを照合します。

Bson filter = Filters.regex("color", "k$");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

次に、前のクエリの出力を示します。

{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

このガイドで言及されている演算子の詳細については、次のサーバー マニュアル エントリを参照してください。

戻る

一括操作