ドキュメントをカウント
項目一覧
Overview
このガイドでは、コレクション内のドキュメント数の正確な数と推定値を取得する方法を学びます。
サンプル データ
このガイドの例では、 Atlasサンプルデータセットの sample_restaurants.restaurants
コレクションを使用します。 無料のMongoDB Atlasクラスターを作成し、サンプルデータセットをロードする方法については、「 を使い始める 」を参照してください。
重要
プロジェクトリ アクター ライブラリ
このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返されたPublisher
インスタンスを消費します。 Project Reactive ライブラリとその使用方法の詳細については、「 使用 開始 」を 参照してください。 (Reactor ドキュメントの参照)。このガイドでは 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 ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。