定義
ウィンドウ内の値のサンプル標準偏差を返します。
注意
曖昧さ回避
このページでは、ウィンドウ関数として使用する場合の$stdDevSamp について説明します。
次の他のコンテキストでは $stdDevSamp を使用することもできます。
$stdDevSamp (accumulator)は、ドキュメントのグループ全体の値のサンプル標準偏差を計算します。$stdDevSamp (expression)は、配列内の数値のサンプル標準偏差を計算します。
構文
{ $setWindowFields: { ... output: { <field>: { $stdDevSamp: <expression> } } } }
動作
結果の型
$stdDevSamp 入力値のサンプル標準偏差をdoubleとして返します。
数値以外の値と欠損値
$stdDevSampウィンドウ関数は、欠落値を含む数値以外の値を無視します。ウィンドウに数値が含まれていない場合、$stdDevSamp は null を返します。
単一の値
ウィンドウにドキュメントが 1 つだけ含まれている場合、$stdDevSamp は null を返します。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
この例では、$setWindowFields 2009を使用して、 と2010 の各ビジュアル映画の実行中サンプル標準偏差フィールドを計算します。各ドキュメントには、年ごとのパーティションの先頭から現在のドキュメントまで計算された$stdDevSamp 値が含まれます。
db.movies.aggregate( [ { $match: { genres: "Musical", year: { $in: [ 2009, 2010 ] }, "imdb.rating": { $type: "double" } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { title: 1 }, output: { stdDevSampRatingInYear: { $stdDevSamp: "$imdb.rating", window: { documents: [ "unbounded", "current" ] } }, rankInYear: { $documentNumber: {} } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, stdDevSampRatingInYear: 1, rankInYear: 1 } }, { $sort: { year: 1, title: 1 } } ] )
先行するパイプライン:
$match20092010を使用して、数値 IMDb 評価を持つ と のビジュアル映画をフィルタリングします。$setWindowFieldsを使用して、映画を で分割し、yeartitleでソートします。ステージでは、$stdDevSampと[ "unbounded", "current" ]のドキュメントウィンドウを使用して、各ドキュメントごとに次のフィールドを作成します。stdDevSampRatingInYear:imdb.ratingの実行中サンプル標準偏差。rankInYear:$documentNumberによって割り当てられたパーティションごとの行番号。
各パーティションの最初のドキュメントは、ウィンドウの値が 1 つしかないため、
stdDevSampRatingInYearはnullです。後続のドキュメントごとに、ウィンドウに値が 1 つ追加されます。$projecttitleを使用して、 、year、imdb、stdDevSampRatingInYear、rankInYearを出力に含めます。$sort結果を年とタイトルで並べ替えるには、 を使用します。