AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ドキュメントの検索

このガイドでは、 MongoDB Java Reactive Streams ドライバーを使用してドキュメントを検索する方法を学習できます。

このガイドの例では、 Atlasサンプルデータセットsample_restaurants.restaurantsコレクションを使用します。 MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、はじめに を参照してください。

重要

プロジェクトリ アクター ライブラリ

このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返された Publisher インスタンスを消費します。Project Reactive ライブラリとその使用方法の詳細については、React ドキュメントの使用開始を参照してください。このガイドでは Project React ライブラリ メソッドをどのように使用しているかについて詳しくは、 「 MongoDBへのデータの書込み 」ガイドを参照してください。

Java Reactive Streams ドライバーには、コレクションからドキュメントを検索するための 1 つのメソッドが含まれています ( find()

このメソッドはクエリフィルターを受け取り、1 つ以上の一致するドキュメントを返します。 クエリフィルターは、クエリで検索するドキュメントを指定するオブジェクトです。

クエリフィルターの詳細については、「クエリの指定」ガイドを参照してください。

コレクション内の 1 つのドキュメントを検索するには、 first()メソッドをfind()メソッド呼び出しに連結し、検索するドキュメントの基準を指定するクエリフィルターをfind()メソッド呼び出しに渡します。 複数のドキュメントがクエリフィルターに一致する場合、 find().first()構造は検索した結果から最初に一致するドキュメントを返します。 クエリフィルターに一致するドキュメントがない場合、構造はNoneを返します。

Tip

find().first()構造は、一致するドキュメントが 1 つしかないことがわかっている場合や、最初の一致のみに該当する場合に便利です。

次の例では、 find().first()構造を使用して、 "cuisine"フィールドの値が"Bakery"である最初のドキュメントを検索します。

Publisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Bakery")).first();
Mono.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Tip

並び替え順

ソート順序を指定しない場合、 find().first()構造はディスク上の自然な順序で最初のドキュメントを返します。

ソートの詳細については、「返すドキュメントを指定する 」ガイドを参照してください。

コレクション内の複数のドキュメントを検索するには、検索するドキュメントの基準を指定するクエリフィルターを find() メソッドに渡します。

次の例では、 find()メソッドを使用して、 "cuisine"フィールドの値が"Spanish"であるすべてのドキュメントを検索します。

FindPublisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Spanish"));
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

注意

すべてのドキュメントの検索

コレクション内のすべてのドキュメントを検索するには、 find()メソッドにパラメータを渡しません。

Publisher<Document> findAllPublisher = restaurants.find();
Flux.from(findAllPublisher)
.doOnNext(System.out::println)
.blockLast();

他のメソッドをチェーンすることで、 find()メソッドの動作を変更できます。 次の表では、一般的に使用される方法について説明します。

Argument
説明

batchSize(int batchSize)

クエリ結果で返される各バッチする内のドキュメントの最大数。デフォルトでは 、ドライバーはこの値を Long.MAX_VALUE に設定します。

0batchSize は、カーソルは作成されますが、 最初のバッチするではドキュメントは返されないことを意味します。

collation(Collation collation)

照合オプションを Collationクラスのインスタンスとして設定します。

comment(String comment)

クエリに文字列を付けます。これにより、サーバーログとプロファイル データ内の操作を追跡して解釈することができます。クエリ コメントの詳細については、 MongoDB Serverマニュアルの cursor.comment() ページ を参照してください。

hint(Bson hint)

ドキュメントをスキャンするインデックスを取得または設定します。 詳細については、MongoDB Server マニュアルのヒント ステートメントを参照してください。

次の例では、find() メソッドを使用して、"cuisine"フィールドの値が "Italian" でコメントを設定しているすべてのドキュメントを検索します。

FindPublisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Italian")).comment("Find operation");
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

使用可能な引数の完全なリストについては、FindPublisher インターフェースのAPIドキュメントを参照してください。

クエリフィルターの詳細については、「クエリの指定」ガイドを参照してください。

Java Reactive Streams ドライバーを使用してドキュメントを取得する実行可能なコード例については、 ドキュメントのクエリガイドを参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。