Overview
このガイドでは、コレクション内のドキュメント数の正確な数と推定値を取得する方法を学びます。
サンプル データ
このガイドの例では、 Atlasサンプルデータセットのsample_restaurants.restaurantsコレクションを使用します。 MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、開始 を参照してください。
重要
プロジェクトリ アクター ライブラリ
このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返された Publisher インスタンスを消費します。Project Reactive ライブラリとその使用方法の詳細については、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クラスのメソッドを説明しています。
方式 | 説明 |
|---|---|
| 結果をソートするときに使用する言語照合の種類を指定します。 詳細については、MongoDB Server マニュアルの 「照合」 を参照してください。 |
| 操作に |
| 操作に |
| 操作のインデックスを |
| 操作のインデックスを |
| カーソルが返すドキュメントの最大数の制限を設定します。 詳細については、 MongoDB Server のドキュメントの「 カーソル 」を参照してください。 |
| クエリが結果を返す前にスキップするドキュメントの数を設定します。 詳細については、 MongoDB Serverマニュアルの skip を参照してください。 |
変更カウントの例
次のコードでは、 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()をカスタマイズするために設定できるオプションについて説明しています。
推定カウントの例の変更
次のコードでは、 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 ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。