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

返すドキュメントを指定する

項目一覧

  • Overview
  • サンプル データ
  • Limit
  • Sort
  • スキップ
  • 制限、ソート、スキップの組み合わせ
  • 詳細情報
  • API ドキュメント

このガイドでは、次のメソッドを使用して、読み取り操作から返されるドキュメントを指定する方法を学習できます。

  • limit(): クエリから返されるドキュメントの最大数を指定します

  • sort(): 返されるドキュメントのソート順序を指定します

  • skip(): クエリ結果を返す前にスキップするドキュメントの数を指定します

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

重要

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

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

読み取り操作から返されるドキュメントの最大数を指定するには、 limit()メソッドをfind()メソッドに連結し、返されるドキュメントの数を渡します。

次の例では、 cuisineの フィールド値が"Italian"であるすべてのレストランを検索し、結果を5ドキュメントに制限します。

FindPublisher<Document> findPublisher = restaurants.find(
eq("cuisine", "Italian")).limit(5);
Flux.from(findPublisher)
.doOnNext(x -> System.out.println(x.getString("name")))
.blockLast();
Isle Of Capri Resturant Italian
Arturo'S Italian
Patsy'S Italian Restaurant Italian
Piccola Venezia Italian
Roadhouse Restaurant Italian

Tip

上記の例では、クエリによって返された最初の 5 つのドキュメントが自然な順序で返されます。 次のセクションでは、指定されたソート順序でドキュメントを返す方法について説明します。

指定した順序でドキュメントを返すには、 sort()メソッドとfind()メソッドをチェーンします。 sort()メソッドは、並べ替え方向メソッドをパラメーターとして受け取ります。 並べ替え方向を指定するには、 ascending()メソッドまたはdescending()メソッドのいずれかをsort()メソッドに渡します。 次に、並べ替えるフィールド値を渡します。 ascending()メソッドでは値が最小から最大値の順にソートされ、 descending()メソッドでは値が最大から最小値の順にソートされます。 どちらの方向も指定しない場合、 sortメソッドは昇順で結果を返します。

次の例では、 "Italian"cuisine値を持つすべてのドキュメントを、 nameフィールドで昇順にソートして返します。

FindPublisher<Document> findPublisher = restaurants.find(
eq("cuisine", "Italian")).sort(ascending("name"));
Flux.from(findPublisher)
.doOnNext(x -> System.out.println(x.getString("name")))
.blockLast();
(Lewis Drug Store) Locanda Vini E Olii
101 Restaurant And Bar
44 Sw Ristorante & Bar
900 Park
A Voce
...
Zucchero E Pomodori

クエリ結果を返す前に指定した数のドキュメントをスキップするには、 skip()メソッドをfind()メソッドに連結し、スキップするドキュメント数を渡します。 skip()メソッドは、クエリ結果内の指定された数のドキュメントを無視し、残りを返します。

次の例では、 boroughフィールドの値が"Manhattan"であるすべてのドキュメントを返し、最初の10ドキュメントをスキップします。

FindPublisher<Document> findPublisher = restaurants.find(
eq("borough", "Manhattan")).skip(10);
Flux.from(findPublisher)
.doOnNext(x -> System.out.println(x.getString("name")))
.blockLast();
Cafe Metro
Lexler Deli
Domino'S Pizza
...

1 つの操作でlimit()sort()skip()メソッドを連結することで、組み合わせることができます。 これにより、返されるソートされたドキュメントの最大数を設定して、返される前に指定された数のドキュメントをスキップできます。

次の例では、 cuisineの値が"Italian"である5ドキュメントが返されます。 結果はnameフィールド値の昇順でソートされ、最初の10ドキュメントはスキップされます。

FindPublisher<Document> findPublisher = restaurants.find(
eq("cuisine", "Italian"))
.sort(ascending("name"))
.limit(5)
.skip(10);
Flux.from(findPublisher)
.doOnNext(x -> System.out.println(x.getString("name")))
.blockLast();
Acqua
Acqua Restaurant
Acqua Santa
Acquista Trattoria
Acquolina Catering

注意

これらのメソッドを呼び出す順序によって、返されるドキュメントは変更されません。 ドライバーは、ソートとスキップ操作を最初に実行し、その後に制限操作を実行するために、呼び出しの順序を自動的に並べ替えます。

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

ドキュメント取得の詳細については、「データ取得ガイド」を参照してください。

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

戻る

返すフィールドを指定する