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

db.collection.count()

項目一覧

  • 定義
  • 互換性
  • 構文
  • 動作
db.collection.count(query, options)

重要

mongosh メソッド

このページでは、mongosh メソッドについて説明します。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、 countコマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

注意

バージョン 4.0 の機能と互換性のある MongoDB ドライバーは、それぞれのカーソルとコレクション count() API を廃止し、 countDocuments()estimatedDocumentCount() の新しい API を採用します。各ドライバーの特定の API 名については、ドライバーのドキュメントを参照してください。

コレクションまたはビューに対するfind()クエリに一致するドキュメントの数を返します。 db.collection.count()メソッドはfind()操作を実行せず、代わりにクエリに一致する結果の数をカウントして返します。

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

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

重要

このコマンドは、M 0 、M 2 、および M 5クラスターで限定的にサポートされています。 詳細については、「サポートされていないコマンド 」を参照してください。

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

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

このメソッドでは、次のパラメーターが使われます。

Parameter
タイプ
説明
query
ドキュメント
クエリの選択基準。
options
ドキュメント
任意。カウントを変更するための追加オプション。

options ドキュメントには、次のフィールドが含まれています。

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

任意。読み取り保証(read concern)を指定します。デフォルトのレベルは "local" です。

単一のスレッドでそれ自体の書き込みの読み取りを可能にするには、レプリカセットのプライマリに対して "majority" 読み取り保証と "majority" 書込み保証を使用します。

読み取り保証(read concern)レベル "majority" を使用するには、空でない query 条件を指定する必要があります。

collation
ドキュメント

任意。

操作に使用する照合を指定します。

照合を指定すると、大文字・小文字やアクセント記号など、文字列を比較するための言語独自のルールを指定できます。

照合オプションの構文は次のとおりです。

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

照合を指定する場合、locale フィールドは必須ですが、その他の照合フィールドはすべて任意です。フィールドの説明については、照合ドキュメントを参照してください。

照合が指定されていなくても、コレクションにデフォルトの照合が設定されている場合(db.createCollection() を参照)には、コレクションの照合が使用されます。

コレクションにも操作にも照合が指定されていない場合、MongoDB では以前のバージョンで使用されていた単純なバイナリ比較によって文字列が比較されます。

1 つの操作に複数の照合は指定できません。たとえば、フィールドごとに異なる照合を指定できません。また、ソートと検索を一度に実行する場合、検索とソートで別の照合を使用できません。

count()db.collection.find(query).count()構造と同等です。

Tip

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

クエリ述語なしでcount()を呼び出すと、不正確なドキュメント数が返される可能性があります。クエリ述語がない場合、count()メソッドはコレクションのメタデータに基づいて結果を返します。その結果、おおよそのカウントが返される場合があります。特に、

コレクション メタデータに基づくカウントについては、「count オプション付きの CollStats パイプライン ステージ」も参照してください。

トランザクション では、 countとshelldb.collection.count() ヘルパーcount() と を使用できません。

詳細については、「トランザクションとカウント操作」を参照してください。

シャーディングされたクラスターでは、クエリ述語のない は、 孤立したドキュメント が存在する場合やdb.collection.count() チャンク移行 が進行中の場合に、 不正確な カウントを生成する可能性があります。

このような状況を回避するには、シャーディングされたクラスターで db.collection.aggregate() メソッドを使用します。

$count ステージを使用してドキュメントをカウントできます。たとえば、次の操作はコレクション内のドキュメントをカウントします。

db.collection.aggregate( [
{ $count: "myCount" }
])

$count ステージは、次の$group + $project シーケンスと同等です。

db.collection.aggregate( [
{ $group: { _id: null, count: { $sum: 1 } } },
{ $project: { _id: 0 } }
] )

Tip

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

$collStats を使用して、コレクションのメタデータに基づいたおおよそのカウントを返します。

次のようなインデックスを持つコレクションを考えてみましょう。

{ a: 1, b: 1 }

カウントを実行するときに、MongoDB は次の場合にインデックスのみを使用してカウントを返すことができます。

  • クエリがインデックスを使用できる、

  • クエリにはインデックスのキーに対する条件のみが含まれており、かつ

  • クエリ述語が、インデックス キーの単一の連続した範囲にアクセスする。

たとえば、次の操作では、インデックスのみを使用してカウントを返すことができます。

db.collection.find( { a: 5, b: 5 } ).count()
db.collection.find( { a: { $gt: 5 } } ).count()
db.collection.find( { a: 5, b: { $gt: 10 } } ).count()

ただし、クエリでインデックスを使用できるが、クエリ述語が単一の連続した範囲のインデックス キーにアクセスしない場合、またはクエリにインデックス外のフィールドに関する条件が含まれている場合は、MongoDB はインデックスを使用するだけでなく、ドキュメントも読み取ってカウントを返す必要があります。

db.collection.find( { a: 5, b: { $in: [ 1, 2, 3 ] } } ).count()
db.collection.find( { a: { $gt: 5 }, b: 5 } ).count()
db.collection.find( { a: 5, b: 5, c: 5 } ).count()

このような場合、MongoDB はドキュメントの最初の読み取り中にドキュメントをメモリにページングすることで、後続の同じカウント操作の呼び出しのパフォーマンスを向上させます。

mongodWired Tiger のストレージ エンジンを使用する の不正シャットダウン後、count() によって報告されるカウント統計が不正確になる可能性があります。

ドリフトの量は、チェックポイントからクリーン シャットダウンまでの間に実行された挿入、アップデート、または削除操作の数によって異なります。チェックポイントは通常、60 秒ごとに発現します。ただし、デフォルト以外の --syncdelay 設定で実行されている mongod インスタンスでは、チェックポイントの頻度が増減する可能性があります。

不正なシャットダウン後に統計を復元するには、mongod の各コレクションに対して validate を実行します。

不正なシャットダウン後:

注意

この精度の低下は、クエリ述語を含ま ないcount() 操作にのみ適用されます。

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

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

db.orders.count()

この操作は、次の操作と同等です。

db.orders.find().count()

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

db.orders.count( { ord_dt: { $gt: new Date('01/01/2012') } } )

クエリは次のクエリと同等です。

db.orders.find( { ord_dt: { $gt: new Date('01/01/2012') } } ).count()

戻る

db.collection.configureQueryAnalyzer