Docs Menu
Docs Home
/ / /
Scala
/

ドキュメントをカウント

項目一覧

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

このガイドでは、 Scalaドライバーを使用して、コレクション内のドキュメント数の正確で推定値を取得する方法を学びます。次のメソッドは、コレクション内のドキュメントをカウントします。

  • countDocuments():クエリフィルターに一致するドキュメント、またはコレクションに存在するドキュメントの正確な数を返します

  • estimatedDocumentCount():コレクション内のドキュメントの推定数を返します

このガイドの例では、companies sample_trainingAtlasサンプルデータセット の データベースの コレクションを使用します。 Scalaアプリケーションからこのコレクションにアクセスするには、AtlasMongoClient クラスターに接続する を作成し、 変数と 変数に次の値を割り当てます。databasecollection

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クラスの一部のメンバー関数について説明しています。

方式
説明

collation()

Sets the collation to use for the operation.
Parameter Type: Collation

hint()

Sets the index to use for the operation.
ParameterType: Bson

limit()

Sets the maximum number of documents to count. This value must be a positive integer.
Parameter Type: int

maxTime()

Sets the maximum amount of time that the operation can run.
Parameter Types: long and TimeUnit

skip()

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 ドキュメントを参照してください。

戻る

個別のフィールド値