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

db.コレクション.countDocuments()(mongoshメソッド)

MongoDB とドライバー

このページでは、mongosh メソッドのドキュメントについて記載しています。MongoDB ドライバーで同等のメソッドを確認するには、ご使用のプログラミング言語の対応するページを参照してください。
db.collection.countDocuments(query, options)

コレクションまたはビューのクエリに一致するドキュメントの数を整数で返します。このメソッドはトランザクションで使用できます。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

注意

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

countDocuments()メソッドの形式は次のとおりです。

db.collection.countDocuments( <query>, <options> )

countDocuments() メソッドは次のパラメータを取ります。

Parameter
タイプ
説明

クエリ

ドキュメント

The query selection criteria. To count all documents, specify an empty document. See also Query Restrictions.

options

ドキュメント

任意。カウント動作に影響を与える追加のオプション。

optionsドキュメントには以下の内容を含めることができます。

フィールド
タイプ
説明

limit

integer

任意。カウントするドキュメントの最大数。

skip

integer

任意。カウントする前にスキップするドキュメントの数。

hint

文字列またはドキュメント

任意。クエリに使用するインデックス名またはインデックス仕様。

maxTimeMS

integer

任意。カウントの実行を許可する最大時間。

db.collection.count() とは異なり、countDocuments() はカウントを返すためにメタデータを使用することはありません。代わりに、不正なシャットダウンが行われたり、シャーディングされたクラスターに孤立したドキュメントが存在したりしても、ドキュメントを集計して正確なカウントを返します。

countDocuments() は次の集計操作をラップし、n の値のみを返します。

db.collection.aggregate([
{ $match: <query> },
{ $group: { _id: null, n: { $sum: 1 } } }
])

countDocuments() は、空または存在しないコレクションまたはビューに対して 0 を返します。

countDocuments() のクエリ式の一部として次のクエリ演算子を使用することはできません。

Restricted Operator
代替

代わりに、 $exprを使用してください。

代わりに、 $geoWithinを$centerと一緒に使用します。つまり、

{ $geoWithin: { $center: [ [ <x>, <y> ], <radius> ] } }

代わりに、 $geoWithinを$centerSphereと一緒に使用します。つまり、

{ $geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] } }

countDocuments() は分散トランザクション内で使用できます。

トランザクションで countDocuments() を使用すると、結果のカウントはコミットされていないマルチドキュメントトランザクションを除外しません。

重要

ほとんどの場合、分散トランザクションでは 1 つのドキュメントの書き込み (write) よりもパフォーマンス コストが高くなります。分散トランザクションの可用性は、効果的なスキーマ設計の代わりにはなりません。多くのシナリオにおいて、非正規化されたデータモデル(埋め込みドキュメントと配列)が引き続きデータやユースケースに最適です。つまり、多くのシナリオにおいて、データを適切にモデリングすることで、分散トランザクションの必要性を最小限に抑えることができます。

トランザクションの使用に関するその他の考慮事項(ランタイム制限や oplog サイズ制限など)については、「本番環境での考慮事項」も参照してください。

countDocuments() を発行したクライアントが操作が完了する前に切断された場合、 MongoDB はkillOp を使用して countDocuments() を終了としてマークします。

このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。

moviesコレクション内のドキュメントの数をカウントするには、次の操作を使用します。

db.movies.countDocuments( { }, { hint: "_id_"} )

注意

空のクエリフィルターでdb.collection.countDocuments()を使用すると、MongoDB はコレクションのフル スキャンを実行するため、非効率的になる可能性があります。 パフォーマンスを向上させるために、この例では自動生成された_idインデックスを使用するためのhint()を指定します。 あるいは、 { "_id": { $gte: MinKey } }などのすべてのドキュメントを検索するクエリフィルターを使用して、インデックスを使用しているすべてのドキュメントをカウントすることもできます。

以下の例では、directorsフィールドに "David Lynch" が含まれる moviesコレクション内のドキュメントの数をカウントします。

db.movies.countDocuments( { directors: "David Lynch" } )
このページを評価