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> には空でない文字列であること、$ で始まらないこと、. 文字を含まないことという条件があります。

戻り値の型は、カウントの最終値を保存できる最小の型で表されます:integerlongdouble

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

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

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

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

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

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

これらのドキュメントを使用して、scores という名前のコレクションを作成します。

db.scores.insertMany( [
{ "_id" : 1, "subject" : "History", "score" : 88 },
{ "_id" : 2, "subject" : "History", "score" : 92 },
{ "_id" : 3, "subject" : "History", "score" : 97 },
{ "_id" : 4, "subject" : "History", "score" : 71 },
{ "_id" : 5, "subject" : "History", "score" : 79 },
{ "_id" : 6, "subject" : "History", "score" : 83 }
] )

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

  1. $match ステージでは、score 値が 80 以下であるドキュメントを除外し、score 値が 80 を超えるドキュメントを次のステージに渡します。

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

db.scores.aggregate( [
{ $match: { score: { $gt: 80 } } },
{ $count: "passing_scores" }
] )

この操作は、次の結果を返します。

{ "passing_scores" : 4 }

入力データセットが空の場合、$count は結果を返しません。 次の例では、スコアが 99 を超えるドキュメントがないため、結果は返されません。

db.scores.aggregate( [
{ $match: { score: { $gt: 99 } } },
{ $count: "high_scores" }
] )

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

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

public class Movie
{
public string Id { get; set; }
public int Runtime { get; set; }
public string Title { get; set; }
public string Rated { get; set; }
public List<string> Genres { get; set; }
public string Plot { get; set; }
public ImdbData Imdb { get; set; }
public int Year { get; set; }
public int Index { get; set; }
public string[] Comments { get; set; }
[BsonElement("lastupdated")]
public DateTime LastUpdated { get; set; }
}

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

次の例では、入力ドキュメントの数をカウントし、その数を値として返すドキュメントを返すパイプラインステージを作成しています。

var pipeline = new EmptyPipelineDefinition<Movie>()
.Count();

戻る

$collStats

項目一覧