Overview
このガイドでは、 MongoDB PHPライブラリを使用して、コレクション内のドキュメント数の正確な推定値を取得する方法を説明します。 次のメソッドは、コレクション内のドキュメントをカウントします。
MongoDB\Collection::countDocuments():クエリフィルターに一致するドキュメント、またはコレクションに存在するドキュメントの正確な数を返しますMongoDB\Collection::estimatedDocumentCount():コレクション内のドキュメントの推定数を返します
サンプル データ
このガイドの例では、 Atlasサンプルデータセットのsample_trainingデータベースのcompaniesコレクションを使用します。 PHPアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続するMongoDB\Clientをインスタンス化し、次の値を$collection変数に割り当てます。
$collection = $client->sample_training->companies;
MongoDB配置を作成し、サンプルデータセットをロードする方法については、MongoDBの使用開始ガイドを参照してください。
正確なカウントの取得
コレクション内のドキュメントの数をカウントするには、 MongoDB\Collection::countDocuments()メソッドを使用します。 特定の検索条件に一致するドキュメントの数をカウントするには、クエリフィルターをcountDocuments()メソッドに渡します。
クエリの指定の詳細については、「 クエリの指定 」ガイドを参照してください。
すべてのドキュメントをカウントする
コレクション内のすべてのドキュメントの数を返すには、次の例に示すように、空のクエリフィルター配列をcountDocuments()メソッドに渡します。
$result = $collection->countDocuments([]); echo 'Number of documents: ', $result;
Number of documents: 9500
特定のドキュメントのカウント
特定の検索条件に一致するドキュメントの数を返すには、クエリフィルターをcountDocuments()メソッドに渡します。
次の例では、 founded_yearフィールドの値が2010であるドキュメントの数をカウントします。
$result = $collection->countDocuments(['founded_year' => 2010]); echo 'Number of companies founded in 2010: ', $result;
Number of companies founded in 2010: 33
カウント動作をカスタマイズする
オプション値を指定する配列を渡すことで、 countDocuments()メソッドの動作を変更できます。 次の表では、カウント操作をカスタマイズするために設定できるいくつかのオプションについて説明しています。
オプション | 説明 |
|---|---|
| |
|
|
|
|
|
|
|
|
|
|
| 操作に使用する読み込み設定 (read preference)です。詳細については、サーバー マニュアルの「 読み込み設定 |
次の例では、 countDocuments()メソッドを使用して、 number_of_employeesフィールドの値が50であるドキュメントの数をカウントし、最大100の結果をカウントするように操作に指示します。
$result = $collection->countDocuments( ['number_of_employees' => 50], ['limit' => 100], ); echo 'Number of companies with 50 employees: ', $result;
Number of companies with 50 employees: 100
照合
操作の 照合 を指定するには、collation オプションを設定する $options 配列パラメータを操作メソッドに渡します。照合ルールを構成する配列に collation オプションを割り当てます。
次の表では、照合を構成するために設定できるフィールドについて説明しています。
フィールド | 説明 |
|---|---|
| (必須)Unicode 用の国際コンポーネント(ICU)ロケールを指定します。サポートされているロケールのリストについては、 MongoDB Serverマニュアルの 「照合ロケールとデフォルト パラメーター」 |
| (任意)大文字と小文字の比較を含めるかどうかを指定します。 |
|
|
| (任意) ICU |
| (任意)ドライバーが数字の string を数値として比較するかどうかを指定します。 |
|
|
| (任意) |
| (任意)発音区別符号を含む string を、string |
照合と各フィールドに可能な値の詳細については、 MongoDB Serverマニュアルの「 照合 」エントリを参照してください。
推定カウントの取得
MongoDB\Collection::estimatedDocumentCount()メソッドを呼び出すと、コレクション内のドキュメント数の推定値を取得できます。 メソッドは、コレクションメタデータに基づいてドキュメントの量を推定します。これは、正確なカウントを実行するよりも高速である可能性があります。
次の例では、 コレクション内のドキュメントの数を見積ります。
$result = $collection->estimatedDocumentCount(); echo 'Estimated number of documents: ', $result;
Estimated number of documents: 9500
推定カウント動作をカスタマイズ
オプション値を指定する配列をパラメーターとして渡すことで、 estimatedDocumentCount()メソッドの動作を変更できます。 次の表では、 配列に設定できるオプションについて説明しています。
オプション | 説明 |
|---|---|
|
|
|
|
| 操作に使用する読み取り保証 (read concern)です。詳細については、サーバー マニュアルの「 読み取り保証 |
| 操作に使用する読み込み設定 (read preference)です。詳細については、サーバー マニュアルの「 読み込み設定 |
|
|
次の例では、 estimatedDocumentCount()メソッドを使用してコレクション内のドキュメント数の推定値を返し、操作のタイムアウトを1000ミリ秒に設定します。
$result = $collection->estimatedDocumentCount(['maxTimeMS' => 1000]); echo 'Estimated number of documents: ', $result;
Estimated number of documents: 9500
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。