$pow(集計)
定義
動作
入力型が混在している場合、$pow
は小さい入力型を 2 つのうち大きい方に昇格させます。型が大きいとみなされるのは、より広い範囲の値を表す場合です。数値型の最小値から最大値の順は、integer → long → double → decimal です。
演算がオーバーフローして、大きい方のデータ型で表される範囲を超えない限り、大きい方の入力型によって結果型も決まります。オーバーフローの場合、$pow
は以下の順序に従って結果を昇格させます。
引数がnull
の値に解決されるか、欠落しているフィールドを参照する場合、 $pow
はnull
を返します。 いずれかの引数がNaN
に解決された場合、 $pow
はNaN
を返します。
例 | 結果 |
---|---|
{ $pow: [ 5, 0 ] } | 1 |
{ $pow: [ 5, 2 ] } | 25 |
{ $pow: [ 5, -2 ] } | 0.04 |
{ $pow: [ -5, 0.5 ] } | NaN |
例
次のドキュメントを含むquizzes
というコレクションを作成します。
db.quizzes.insertMany( [ { _id : 1, scores : [ { name : "dave123", score : 85 }, { name : "dave2", score : 90 }, { name : "ahn", score : 71 } ] }, { _id : 2, scores : [ { name : "li", quiz : 2, score : 96 }, { name : "annT", score : 77 }, { name : "ty", score : 82 } ] } ] )
次の例では、各クイズの分散を計算します。
db.quizzes.aggregate( [ { $project: { variance: { $pow: [ { $stdDevPop: "$scores.score" }, 2 ] } } } ] )
この操作は次の結果を返します。
{ _id : 1, variance : 64.66666666666667 } { _id : 2, variance : 64.66666666666667 }