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

ドキュメントをカウント

項目一覧

  • Overview
  • サンプル データ
  • 正確なカウントの取得
  • すべてのドキュメントをカウントする
  • 特定のドキュメントのカウント
  • カウント動作をカスタマイズする
  • 変更カウントの例
  • 推定カウントの取得
  • 推定カウント動作をカスタマイズ
  • 推定カウントの例の変更
  • API ドキュメント

このガイドでは、コレクション内のドキュメント数の正確な数と推定値を取得する方法を学びます。

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

重要

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

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

コレクション内のドキュメントの数をカウントするには、 countDocuments()メソッドを使用します。 特定の検索条件に一致するドキュメントの数をカウントするには、クエリフィルターをcountDocuments()メソッドに渡します。

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

コレクション内のすべてのドキュメントの数を返すには、次の例に示すように、 countDocuments()メソッドを呼び出し、パラメータを渡しません。

Publisher<Long> countPublisher = restaurants.countDocuments();
Mono.from(countPublisher).doOnNext(System.out::println).blockLast();

特定の検索条件に一致するドキュメントの数を返すには、次の例に示すように、 countDocuments()メソッドでクエリを指定します。 クエリを指定する方法の詳細については「 クエリの指定」ガイドを参照してください。

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

メソッドに任意のパラメータを渡すことで、 countDocuments()メソッドの動作を変更できます。 CountOptionsクラスは、 countDocuments()メソッドの動作を変更するメソッドを提供します。 CountOptionsクラスを使用するには、クラスの新しいインスタンスを構築し、そのメソッドの 1 つ以上を呼び出して カウント操作を変更します。 これらのメソッド呼び出しを連鎖させることができます。

カウント操作の動作を変更するには、クラスインスタンスと連鎖されたメソッド呼び出しをcountDocuments()メソッドの最後の引数として渡します。

以下の表では、 CountOptionsクラスのメソッドを説明しています。

方式
説明
collation(Collation collation)
Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.
comment(BsonValue comment)
Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
comment(String comment)
Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
hint(Bson hint)
Sets the index for the operation as a Bson value. For more information, see the hint statement in the MongoDB Server manual.
hintString(String hint)
Sets the index for the operation as a String value. For more information, see the hint statement in the MongoDB Server manual.
limit(int limit)
Sets a limit for the maximum number of documents the cursor returns. For more information, see cursor in the MongoDB Server documentation.
MaxTime(long maxTime, TimeUnit timeUnit)
Sets the maximum execution time on the server for the operation. If the operation does not complete before the time limit, the driver terminates the operation.
skip(int skip)
Sets the number of documents the query skips before returning results. For more information, see skip in the MongoDB Server manual.

次のコードでは、 countDocuments()メソッドを使用して、 cuisine値が"Italian"であるrestaurantsコレクション内のすべてのドキュメントをカウントします。 また、コメント"Count all Italian restaurants"Stringとして操作に添付します。

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"),
new CountOptions().comment("Count all Italian restaurants"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

estimatedDocumentCount()メソッドを呼び出すと、コレクション内のドキュメント数の推定値を取得できます。 メソッドは、コレクションメタデータに基づいてドキュメントの数を推定します。これは、正確なカウントを実行するよりも高速である可能性があります。

次の例では、 コレクション内のドキュメントの数を見積ります。

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount();
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

メソッドに任意のパラメータを渡すことで、 estimatedDocumentCount()メソッドの動作を変更できます。 EstimatedDocumentCountOptionsクラスは、 estimatedDocumentCount()メソッドの動作を変更するメソッドを提供します。 EstimatedDocumentCountOptionsクラスを使用するには、クラスの新しいインスタンスを構築し、そのメソッドの 1 つ以上を呼び出して カウント操作を変更します。 これらのメソッド呼び出しを連鎖させることができます。

カウント操作の動作を変更するには、クラスインスタンスと連鎖されたメソッド呼び出しをestimatedDocumentCount()メソッドの唯一の引数として渡します。

次の表では、 estimatedDocumentCount()をカスタマイズするために設定できるオプションについて説明しています。

プロパティ
説明
comment(BsonValue comment)
Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
comment(String comment)
Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
MaxTime(long maxTime, TimeUnit timeUnit)
Sets the maximum execution time on the server for the operation. If the operation does not complete before the time limit, the driver terminates the operation.

次のコードでは、 estimatedDocumentCount()メソッドを使用して、 restaurantsコレクション内のドキュメントの数を推定します。 また、 "Estimated count of all documents"Stringとして操作にアタッチします。

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount(
new EstimatedDocumentCountOptions()
.comment("Estimated count of all documents"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

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

戻る

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