Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$count(集計ステージ)

$count

ステージに入力されたドキュメントの数を含むドキュメントを次のステージに渡します。

注意

曖昧さ回避

このページでは、 $count集計パイプライン ステージについて説明します。 $count集計アキュムレータについては、 $count (aggregation accumulator)を参照してください。

次の環境でホストされる配置には $count を使用できます。

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

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

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

$count の構文は次のとおりです。

{ $count: <string> }

<string> はカウントを値として持つ出力フィールドの名前です。<string> には空でない文字列であること、$ で始まらないこと、. 文字を含まないことという条件があります。

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

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

myCount は、カウントを保存する出力フィールドです。 この出力フィールドには別の名前を指定できます。

入力データセットが空の場合、$count は結果を返しません。

Tip

db.collection.countDocuments()$group 集計ステージを $sum 式でラップします。

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

次の集計操作には 2 つのステージがあります。

  1. $match ステージでは、metacritic100 に等しいドキュメントをフィルタリングして、それらのドキュメントのみを次のステージに渡します。

  2. $count ステージは、集計パイプラインに残っているドキュメントの数を返し、その値を perfect_score_count というフィールドに割り当てます。

db.movies.aggregate( [
{ $match: { metacritic: { $eq: 100 } } },
{ $count: "perfect_score_count" }
] )
[ { perfect_score_count: 8 } ]

このページのC#の例では、Atlasサンプルデータセットsample_mflixデータベースを使用します。MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 MongoDB .NET/ C#ドライバーのドキュメントの「 開始 」を参照してください。

次の Movie クラスは、sample_mflix.movies コレクション内のドキュメントをモデル化します。

[BsonIgnoreExtraElements]
public class Movie
{
[BsonId]
public ObjectId Id { get; set; }
[BsonElement("title")]
public string Title { get; set; } = null!;
[BsonElement("metacritic")]
public int Metacritic { get; set; }
}

MongoDB .NET/ C#ドライバーを使用して$count ステージを集計パイプラインに追加するには、 PipelineDefinitionオブジェクトで Count() メソッドを呼び出します。

次の例では、metacriticフィールドの値が 100 である moviesコレクション内のすべてのドキュメントの数を返すパイプラインステージを作成します。

var pipeline = new EmptyPipelineDefinition<Movie>()
.Match(Builders<Movie>.Filter.Eq(m => m.Metacritic, 100))
.Count();

このページのNode.js の例では、Atlasサンプルデータセットsample_mflixデータベースを使用します。無料のMongoDB Atlas cluster を作成し、サンプルデータセットをロードする方法については、 MongoDB Node.jsドライバーのドキュメントの開始を参照してください。

MongoDB Node.jsドライバーを使用して $count ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $count 演算子を使用します。

次の例では、sample_mflix.moviesコレクションからの入力ドキュメントの数をカウントし、カウントを含むドキュメントを返すパイプラインステージを作成します。次に、この例では集計パイプラインを実行します。

const pipeline = [{ $count: "movies" }];
const cursor = collection.aggregate(pipeline);
return cursor;

戻る

$collStats

項目一覧