Docs Menu
Docs Home
/ / /
Java Reactive Streams ドライバー
/

Retrieve Data

項目一覧

  • Overview
  • サンプル データ
  • ドキュメントの検索
  • 1 つのドキュメントの検索
  • 複数ドキュメントの検索
  • 検索動作の変更
  • 詳細情報
  • API ドキュメント

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

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

重要

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

このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返されたPublisherインスタンスを消費します。 Project Reactive ライブラリとその使用方法の詳細については、「 使用 開始 」を 参照してください。 (Reactor ドキュメントの参照)。このガイドでは 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)
Limits the number of documents to hold in a cursor at a given time. To learn more about cursors, see cursor in the MongoDB Server documentation.
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 $comment page.
hint(Bson hint)
Gets or sets the index to scan for documents. For more information, see the hint statement in the MongoDB Server manual.
maxTime(long maxTime, TimeUnit timeUnit)
Sets the maximum execution time on the server for this operation. If this time is exceeded, the Java Reactive Streams driver aborts the operation and raises an ExecutionTimeout.

次の例では、 find()メソッドを使用して、 "cuisine"フィールドの値が"Italian"で、最大実行時間が10秒に設定されているすべてのドキュメントを検索します。

FindPublisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Italian")).maxTime(10L, TimeUnit.SECONDS);
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

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

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

Java Reactive Streams ドライバーを使用してドキュメントを取得する実行可能なコード例については、 MongoDBからのデータの読み取り を参照してガイド。

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

  • find()

  • FindPublisher

  • 照合

戻る

クエリを指定する