ドキュメントをカウント
項目一覧
Overview
このガイドでは、 Scalaドライバーを使用して、コレクション内のドキュメント数の正確で推定値を取得する方法を学びます。次のメソッドは、コレクション内のドキュメントをカウントします。
countDocuments()
:クエリフィルターに一致するドキュメント、またはコレクションに存在するドキュメントの正確な数を返しますestimatedDocumentCount()
:コレクション内のドキュメントの推定数を返します
サンプル データ
このガイドの例では、companies
sample_training
Atlasサンプルデータセット の データベースの コレクションを使用します。 Scalaアプリケーションからこのコレクションにアクセスするには、AtlasMongoClient
クラスターに接続する を作成し、 変数と 変数に次の値を割り当てます。database
collection
val database: MongoDatabase = mongoClient.getDatabase("sample_training") val collection: MongoCollection[Document] = database.getCollection("companies")
MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。
正確なカウントの取得
コレクション内のドキュメントの数をカウントするには、 countDocuments()
メソッドを使用します。 特定の検索条件に一致するドキュメントの数をカウントするには、クエリフィルターをcountDocuments()
メソッドに渡します。
クエリの指定の詳細については、「 クエリの指定」ガイドを参照してください。
すべてのドキュメントをカウントする
コレクション内のすべてのドキュメントの数を返すには、次の例に示すように、パラメータを渡しずに countDocuments()
メソッドを呼び出します。
collection.countDocuments() .subscribe((count: Long) => println(s"Number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Number of documents: 9500
特定のドキュメントのカウント
特定の検索条件に一致するドキュメントの数を返すには、クエリフィルターをcountDocuments()
メソッドに渡します。
次の例では、 founded_year
フィールドの値が2010
であるドキュメントの数をカウントします。
collection.countDocuments(equal("founded_year", 2010)) .subscribe((count: Long) => println(s"Companies founded in 2010: $count"), (e: Throwable) => println(s"There was an error: $e"))
Number of companies founded in 2010: 33
カウント動作をカスタマイズする
CountOptions
インスタンスをパラメータとして渡すことで、countDocuments()
メソッドの動作を変更できます。次の表は、 カウント操作のオプションを設定するために使用できる CountOptions
クラスの一部のメンバー関数について説明しています。
方式 | 説明 |
---|---|
| Sets the collation to use for the operation. Parameter Type: Collation |
| Sets the index to use for the operation. ParameterType: Bson |
| Sets the maximum number of documents to count. This value must be a positive integer. Parameter Type: int |
| Sets the maximum amount of time that the operation can run. Parameter Types: long and TimeUnit |
| Sets the number of documents to skip before counting documents. Parameter Type: int |
次の例では、 countDocuments()
メソッドを使用して、 number_of_employees
フィールドの値が50
であるドキュメントの数をカウントし、最大100
の結果をカウントするように操作に指示します。
val countOptions = CountOptions().limit(100) collection.countDocuments(equal("number_of_employees", 50), countOptions) .subscribe((count: Long) => println(s"Companies with 50 employees: $count"), (e: Throwable) => println(s"There was an error: $e"))
Number of companies with 50 employees: 100
推定カウントの取得
estimatedDocumentCount()
メソッドを呼び出すと、コレクション内のドキュメント数の推定値を取得できます。 メソッドは、コレクションメタデータに基づいてドキュメントの量を推定します。これは、正確なカウントを実行するよりも高速である可能性があります。
次の例では、 コレクション内のドキュメントの数を見積ります。
collection.estimatedDocumentCount() .subscribe((count: Long) => println(s"Estimated number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Estimated number of documents: 9500
推定カウント動作をカスタマイズ
EstimatedDocumentCountOptions
インスタンスをパラメータとして渡すことで、estimatedDocumentCount()
メソッドの動作を変更できます。 EstimatedDocumentCountOptions
クラスにはmaxTime()
メンバー関数が含まれています。このメンバー関数を使用すると、EstimatedDocumentCountOptions
オブジェクトを構成し、カウント操作を実行できる最大時間を設定できます。
次の例では、 estimatedDocumentCount()
メソッドを使用してコレクション内のドキュメント数の推定値を返し、操作のタイムアウトを 3
秒に設定します。
val estimatedOptions = EstimatedDocumentCountOptions().maxTime(3, SECONDS) collection.estimatedDocumentCount(estimatedOptions) .subscribe((count: Long) => println(s"Estimated number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Estimated number of documents: 9500
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。