$count (件数カウント)
最終更新:2026-10-09
$count (件数カウント)
$count は、パイプラインに残っているドキュメント数を保持した { field: N } の形の単一ドキュメントを返します。$sum: 1 を使う $group の省略記法です。$match の後に置けば、グループ化なしでフィルター後の件数を数えられます。出力は単一ドキュメントで、後続ステージにもそのまま渡ります。
| カテゴリ | コアステージ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $count: "<outputFieldName>" }
⚙️ パラメータ
| 出力フィールド名 | 件数を受け取るフィールド名。 |
|---|
戻り値:単一の { count: N } ドキュメント(フィールド名は引数で指定)
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $count: ステータスが A の注文の件数
db.orders.aggregate([
{ $match: { status: 'A' } },
{ $count: 'total' }
])
出力:
// 一致した注文の件数
{ "total": 25 }
📌 注意事項
- $count は単一ドキュメントを出力し、後続へ流れるのは 1 件だけ
- { $group: { _id: null, count: { $sum: 1 } } } と同じ意味
- フィールド名はプレーンな文字列で、$ プレフィックスのパスは使えない
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$count と countDocuments の違いは?
AcountDocuments はコレクションを直接数えます。$count はこれまでのパイプラインステージが生成したドキュメントを数えます。
Q$count の後も集計を続けられますか?
Aはい。単一ドキュメントを出力し、後続ステージが処理を続けます。
Q$count の出力フィールド名を変えられますか?
Aはい。引数がフィールド名です。たとえば { $count: 'total' } は { total: N } を出力します。