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 に設定します。

batchSize0 の場合、カーソルが確立されますが、最初のバッチするではドキュメントは返されません。

collation(Collation collation)

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

comment(String comment)

string をクエリに接続します。これにより、サーバーログとプロファイルデータでの操作の追跡と解釈が容易になります。クエリコメントの詳細については、MongoDB Server マニュアルの「カーソル.comment()」ページを参照してください。MongoDB Server マニュアルのページ。

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 ドキュメントを参照してください。