AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

ドキュメントをカウント

このガイドでは、 C++ドライバーを使用して、コレクション内のドキュメント数の正確な推定値を取得する方法を学習できます。 count_documents()メソッドは、クエリフィルターに一致するドキュメント、またはコレクションに存在するドキュメントの正確な数を返し、 estimated_document_count()メソッドはコレクション内のドキュメントの推定数を返します。

このガイドの例では、 Atlasサンプルデータセットsample_trainingデータベースのcompaniesコレクションを使用します。 C++アプリケーションからこのコレクションにアクセスするには、Atlasmongocxx::client クラスターに接続する をインスタンス化し、次の値をdb 変数とcollection 変数に割り当てます。

auto db = client["sample_training"];
auto collection = db["companies"];

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、MongoDBを使い始めるガイドを参照してください。

コレクション内のドキュメントの数をカウントするには、 count_documents()メソッドを使用します。 特定の検索条件に一致するドキュメントの数をカウントするには、クエリフィルタードキュメントをcount_documents()メソッドに渡します。

クエリの指定の詳細については、「 クエリの指定 」ガイドを参照してください。

コレクション内のすべてのドキュメントの数を返すには、次の例に示すように、空の フィルタードキュメントをcount_documents()メソッドに渡します。

auto result = collection.count_documents({});
std::cout << "Number of documents: " << result << std::endl;
Number of documents: 9500

特定の検索条件に一致するドキュメントの数を返すには、クエリフィルタードキュメントをcount_documents()メソッドに渡します。

次の例では、 founded_yearの値が2010であるドキュメントの数をカウントします。

auto result = collection.count_documents(make_document(kvp("founded_year", 2010)));
std::cout << "Number of companies founded in 2010: " << result << std::endl;
Number of companies founded in 2010: 33

mongocxx::options::countクラスのインスタンスをパラメーターとして渡すことで、 count_documents()メソッドの動作を変更できます。 次の表では、 mongocxx::options::countインスタンスで設定できるフィールドを説明しています。

フィールド
説明

collation

操作に使用する 照合
。タイプ:bsoncxx::document::view_or_value

hint


操作に使用するインデックス。タイプ:mongocxx::hint

comment


操作に添付するコメント。タイプ:bsoncxx::types::bson_value::view_or_value

limit


カウントするドキュメントの最大数。この値は正の整数である必要があります。タイプ:std::int64_t

max_time


操作を実行できる最大時間(ミリ秒単位)。タイプ:std::chrono::milliseconds

skip


ドキュメントをカウントする前にスキップするドキュメントの数。タイプ:std::int64_t

read_preference

操作に使用する読み込み設定 (read
preference)です。タイプ:mongocxx::read_preference

次の例では、 count_documents()メソッドを使用して、 number_of_employeesフィールドの値が50であるドキュメントの数をカウントし、最大100の結果をカウントするように操作に指示します。

mongocxx::options::count opts;
opts.limit(100);
auto result = collection.count_documents(make_document(kvp("number_of_employees", 50)), opts);
std::cout << "Number of companies with 50 employees: " << result << std::endl;
Number of companies with 50 employees: 100

estimated_document_count()メソッドを呼び出すと、コレクション内のドキュメント数の推定値を取得できます。 メソッドは、コレクションメタデータに基づいてドキュメントの量を推定します。これは、正確なカウントを実行するよりも高速である可能性があります。

次の例では、 コレクション内のドキュメントの数を見積ります。

auto result = collection.estimated_document_count();
std::cout << "Estimated number of documents: " << result << std::endl;
Estimated number of documents: 9500

mongocxx::options::estimated_document_countクラスのインスタンスをパラメーターとして渡すことで、 estimated_document_count()メソッドの動作を変更できます。 次の表では、 mongocxx::options::estimated_document_countインスタンスで設定できるフィールドを説明しています。

フィールド
説明

max_time


操作を実行できる最大時間(ミリ秒単位)。タイプ:std::chrono::milliseconds

comment


操作に添付するコメント。タイプ:bsoncxx::types::bson_value::view_or_value

read_preference

操作に使用する読み込み設定 (read
preference)です。タイプ:mongocxx::read_preference

次の例では、 estimated_document_count()メソッドを使用してコレクション内のドキュメント数の推定値を返し、最大1000ミリ秒にわたって操作を実行するように指示します。

mongocxx::options::estimated_document_count opts;
opts.max_time(std::chrono::milliseconds{1000});
auto result = collection.estimated_document_count(opts);
std::cout << "Estimated number of documents: " << result << std::endl;
Estimated number of documents: 9500

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。