定義
ドキュメントのグループ全体の値のサンプル標準偏差を計算します。
$stdDevSamp入力値が、人口を一般化するデータのサンプルを表す場合は、 を使用します。値がデータの母集団全体を表す場合は、代わりに$stdDevPop を使用します。
$stdDevSampアキュムレータは、次のステージで使用できます。
注意
曖昧さ回避
このページでは、アキュムレータとして使用する場合の$stdDevSamp について説明します。アキュムレータは、入力ドキュメントのグループにわたる集計値を返します。
次の他のコンテキストでは $stdDevSamp を使用することもできます。
$stdDevSamp (expression)は、配列内の数値のサンプル標準偏差を返します。$stdDevSamp (window function)$setWindowFieldsは、ウィンドウ内の値のサンプル標準偏差を計算するために ステージで使用されます。
構文
{ $stdDevSamp: <expression> }
動作
結果の型
$stdDevSamp 入力値のサンプル標準偏差をdoubleとして返します。
Non-Numeric Values
$stdDevSamp は、数値以外の値、null 値、欠落したフィールドを無視します。すべての入力値が数値以外または欠落している場合、$stdDevSamp は null を返します。
単一の値
入力が単一の数値で構成されている場合、$stdDevSamp は null を返します。
例
このページの例では、 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 }, stdDevSampRating: { $stdDevSamp: "$imdb.rating" } } }, { $match: { movieCount: { $gte: 10 } } }, { $sort: { stdDevSampRating: -1 } }, { $limit: 5 } ] )
先行するパイプライン:
を使用して、 フィールドと数値
$matchを持つ映画をフィルタリングします。directorsimdb.rating$unwindを使用して、役員のクレジットごとに個別のドキュメントを作成します。を使用して役員ごとにグループ化し、
$groupを持つ映画をカウントし、$sumstdDevSampRating$stdDevSampで を使用してimdb.ratingを計算します。2 つ目の
$matchを使用して、少なくとも10 の映画を含む監督のみを保持します。$sortを使用してstdDevSampRating降順で並べ替えます。$limit上位の5 結果を返すには、 を使用します。