Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Java Reactive Streams ドライバー
/

Retrieve Data

このガイドでは、 MongoDB Java Reactive Streams ドライバーを使用して、読み取り操作によりMongoDBコレクションからデータを検索する方法を学習できます。

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

重要

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

このガイドでは、プロジェクト Reactive ライブラリを使用して、Publisher Java Reactive Streams ドライバー メソッドによって返された インスタンスを消費します。 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)

The maximum number of documents within each batch returned in a query result. By default, the find command has an initial batch size of 101 documents and a maximum size of 16 mebibytes (MiB) for each subsequent batch. This option can enforce a smaller limit than 16 MiB, but not a larger one. If you set batchSize to a limit that results in batches larger than 16 MiB, this option has no effect.
A batchSize of 0 means that the cursor will be established, but no documents will be returned in the first batch.

collation(Collation collation)

Sets the collation options as an instance of the Collation class.

comment(String comment)

Attaches a string to the query. This can help you trace and interpret the operation in the server logs and in profile data. To learn more about query comments, see the cursor.comment() page in the MongoDB Server manual.

hint(Bson hint)

Gets or sets the index to scan for documents. For more information, see the hint statement in the MongoDB Server manual.

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

  • find()

  • FindPublisher

  • 照合

戻る

クエリ

項目一覧