Docs Menu
Docs Home
/
MongoDB マニュアル
/ / /

db.collection.countDocuments()

項目一覧

  • 定義
  • 互換性
  • 構文
  • 動作

MongoDB とドライバー

このページでは、 mongoshメソッドについて説明します。 MongoDB ドライバーで同等のメソッドを確認するには、プログラミング言語の対応するページを参照してください。

C#Java SyncNode.jsCC++GoJava RSKotlin CoroutineKotlin SyncPHPMotorPyMongoRustScalaSwift
db.collection.countDocuments(query, options)

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

次の環境でホストされる配置には db.collection.countDocuments() を使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

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

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

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

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

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

Parameter
タイプ
説明
クエリ
ドキュメント
クエリの選択基準。すべてのドキュメントをカウントするには、空のドキュメントを指定します。「クエリの制限」も参照してください。
options
ドキュメント
任意。カウント動作に影響を与える追加のオプション。

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

フィールド
タイプ
説明
limit
integer
任意。カウントするドキュメントの最大数。
skip
integer
任意。カウントする前にスキップするドキュメントの数。
hint
文字列またはドキュメント
任意。クエリに使用するインデックス名またはインデックス仕様。
maxTimeMS
integer
任意。カウントの実行を許可する最大時間。

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

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

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

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

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

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

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

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

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

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

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

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

重要

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

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

MongoDB 4.2以降では、 db.collection.countDocuments()を発行したクライアントが操作の完了前に切断した場合、MongoDB は killOp を使用してdb.collection.countDocuments()を終了対象としてマークし

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

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

注意

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

orders コレクション内のフィールド ord_dtnew Date('01/01/2012') より大きいドキュメントの数をカウントします。

db.orders.countDocuments( { ord_dt: { $gt: new Date('01/01/2012') } }, { limit: 100 } )

Tip

以下も参照してください。

戻る

db.collection.count