AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

ドキュメントをカウント

このガイドでは、 MongoDBコレクション内のドキュメントの数をカウントする方法を学習できます。Node.jsドライバーでは、 コレクション内のドキュメントをカウントするための 2 つの方法が提供されています。

  • コレクション.countDocuments() は、指定されたクエリに一致するコレクション内のドキュメントの数を返します。空のクエリドキュメントを指定すると、countDocuments() はコレクション内のドキュメントの総数を返します。

  • コレクション .estimatedDocumentCount() は、コレクションのメタデータに基づいて、コレクション内のドキュメント数の推定値を返します。

estimatedDocumentCount() この推定では、コレクションをスキャンする代わりにコレクションのメタデータが使用されるため、countDocuments() よりも高速です。対照的に、 countDocuments()は結果が返されるまでに時間がかかりますが、ドキュメントの数を正確にカウントし、フィルターの指定もサポートされています。ワークロードに適した方法を選択します。

カウントするドキュメントを指定するには、 countDocuments()でクエリパラメータを使用します。countDocuments()では指定されたクエリに一致するドキュメントがカウントされます。

countDocuments() estimatedDocumentCount()は、メソッドの実行に影響するオプションの設定をサポートします。詳細については、各メソッドの参考ドキュメントを参照してください。

Tip

countDocuments()を使用してコレクション内のドキュメントの合計数を返すと、コレクションスキャンを回避してパフォーマンスを向上させることができます。 そのためには、ヒントを使用して_idフィールドの組み込みインデックスを活用してください。 この手法は、空のクエリ パラメータを使用してcountDocuments()を呼び出す場合にのみ使用してください。

collection.countDocuments({}).hint("_id");

注意

セットアップ例

この例では、接続 URI を使用して MongoDB インスタンスに接続します。MongoDB インスタンスへの接続の詳細については、「MongoDB への接続」ガイドを参照してください。この例では、Atlas サンプル データセットに含まれる sample_mflix データベースの movies コレクションも使用します。MongoDB Get Startedに従って、MongoDB Atlasの無料クラスター上のデータベースに読み込むことができます。

注意

Typescript固有の機能はありません

次のコード例ではJavaScriptを使用します。このユースケースに関連するドライバーのTypescript固有の機能はありません。

次の例では、sample_mflixデータベース内の moviesコレクション内のドキュメント数を推定し、countriesフィールドに Canada が含まれる moviesコレクション内のドキュメント数の正確なカウントを返します。

// Count documents in a collection import { MongoClient } from "mongodb"; // Replace the uri string with your MongoDB deployment's connection stringconst uri = "<connection string uri>"; const client = new MongoClient(uri); async function run() { try { const database = client.db("sample_mflix"); const movies = database.collection("movies"); /* Print the estimate of the number of documents in the "movies" collection */ const estimate = await movies.estimatedDocumentCount(); console.log(`Estimated number of documents in the movies collection: ${estimate}`); /* Print the number of documents in the "movies" collection that match the specified query */ const query = { countries: "Canada" }; const countCanada = await movies.countDocuments(query); console.log(`Number of movies from Canada: ${countCanada}`); } finally { // Close the connection after the operations complete await client.close(); }}// Run the program and print any thrown exceptionsrun().catch(console.dir);

上記のサンプルコードを実行すると、次の出力が得られます。

Estimated number of documents in the movies collection: 23541Number of movies from Canada: 1349

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