定義
ドキュメントのグループ全体における値の母集団標準偏差を計算します。値が表現したいデータの母集団全体を網羅しており、一般化したくない場合は、$stdDevPop を使用します。
値が母集団からのサンプルのみを表す場合は、代わりに $stdDevSamp を使用します。
$stdDevPop アキュムレータは次のステージで使用可能です。
注意
曖昧さ回避
このページでは、$stdDevPop をアキュムレータとして使用する場合について説明します。アキュムレータは、入力ドキュメントのグループ全体で集計値を返します。
$stdDevPop は、これらの他のコンテキストでも使用できます。
$stdDevPop (expression), 配列内の数値の母集団標準偏差を返します。$stdDevPop (window function)は、$setWindowFieldsステージで、特定のウィンドウ内のドキュメントの母標準偏差を計算するために使用されます。
構文
{ $stdDevPop: <expression> }式の詳細については、「式 」を参照してください。
動作
結果の型
$stdDevPop 入力値の母集団標準偏差をdoubleとして返します。
数値以外の値または欠損値
$stdDevPop 欠落値を含む数値以外の値を無視します。入力値がすべて非数値の場合、$stdDevPop は null を返します。
単一の値
入力が単一の数値で構成されている場合、$stdDevPopは0を返します。
例
このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。
次の例では、映画を監督別にグループ化し、10本以上の映画を手がけた監督の中から、最も多様なIMDb評価を持つ5人の監督を返します。
db.movies.aggregate( [ { $match: { directors: { $exists: true }, "imdb.rating": { $type: "double" } } }, { $unwind: "$directors" }, { $group: { _id: "$directors", movieCount: { $sum: 1 }, stdDevRating: { $stdDevPop: "$imdb.rating" } } }, { $match: { movieCount: { $gte: 10 } } }, { $sort: { stdDevRating: -1 } }, { $limit: 5 }] )以前のパイプライン:
$matchを使用して、directorsフィールドと数値の IMDb 評価がある映画をフィルターします。$unwindを使用して、役員と映画の組み合わせごとに 1 ドキュメントを作成します。そのため、各役員と映画の組み合わせは分けてグループ化されます。$groupを使用して、役員別にグループ化し、映画をカウントし、およびimdb.ratingについて$stdDevPopを使用してstdDevRatingを計算します。$matchを使用して、少なくとも 10 本の映画を持つ役員のみを維持します。$sortを使用して、stdDevRatingの降順で結果を返します。$limitを使用して上位 5 件の結果を返します。