Docs Menu
Docs Home
/ / /
Node.js ドライバー
/ /

ドキュメントをカウント

このガイドでは、 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コレクションも使用します。Atlas を使い始める」ガイドに従って、 MongoDB Atlasの無料階層のデータベースにロードできます。

注意

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

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

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

1// Count documents in a collection
2
3import { MongoClient } from "mongodb";
4
5// Replace the uri string with your MongoDB deployment's connection string
6const uri = "<connection string uri>";
7
8const client = new MongoClient(uri);
9
10async function run() {
11 try {
12 const database = client.db("sample_mflix");
13 const movies = database.collection("movies");
14
15 /* Print the estimate of the number of documents in the
16 "movies" collection */
17 const estimate = await movies.estimatedDocumentCount();
18 console.log(`Estimated number of documents in the movies collection: ${estimate}`);
19
20 /* Print the number of documents in the "movies" collection that
21 match the specified query */
22 const query = { countries: "Canada" };
23 const countCanada = await movies.countDocuments(query);
24 console.log(`Number of movies from Canada: ${countCanada}`);
25 } finally {
26 // Close the connection after the operations complete
27 await client.close();
28 }
29}
30// Run the program and print any thrown exceptions
31run().catch(console.dir);

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

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

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

戻る

クエリを指定する

項目一覧