定義
特定のウィンドウ内のドキュメントの数を返します。
注意
曖昧さ回避
このページでは、ウィンドウ関数として使用する場合の$count について説明します。
次の他のコンテキストでは $count を使用することもできます。
$count (accumulator)は、グループにあるドキュメントの数を返します。$count (aggregation stage)は、入力ドキュメントの数を返します。
構文
{ $setWindowFields: { ... output: { <field>: { $count: {}, window: { documents: [ <lower boundary>, <upper boundary> ] } } } } }
$count は、パラメータを受け入れません。
Tip
$count は、{ $sum: 1 } $setWindowFieldsステージで を使用することと機能的に同等です。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
類似評価の映画をカウントする
この例では、範囲ベースのウィンドウで $countウィンドウ関数を使用して、各映画の評価の 0.5 ポイント以内に IMDb 評価を持つ 2000 のアクション映画の数をカウントします。
db.movies.aggregate( [ { $match: { genres: "Action", year: 2000, "imdb.rating": { $ne: null } } }, { $setWindowFields: { sortBy: { "imdb.rating": 1 }, output: { moviesWithSimilarRating: { $count: {}, window: { range: [ -0.5, 0.5 ] } } } } }, { $project: { _id: 0, title: 1, "imdb.rating": 1, moviesWithSimilarRating: 1 } }, { $sort: { "imdb.rating": -1 } }, { $limit: 10 } ] )
前の例では、次のようになります。
$matchフィルタは、imdb.rating値を持つ 2000 でリリースされたアクション 映画のフィルターです。sortBy: { "imdb.rating": 1 }ドキュメントを IMDb 評価の昇順でソートします。範囲ベースのウィンドウを使用する場合はsortByが必要です。$projectは、出力にtitle、imdb.rating、およびmoviesWithSimilarRatingフィールドを含めます。$sortと$limitは、読みやすさとして最高評価の 10 の映画を返します。
出力には、比較的一意の評価を持つ付与メンバー(8.5)の moviesWithSimilarRating カウントが、7.4 などの一般的な評価を持つ映画よりも低いことが示されています。