$pow(聚合)
定义
行为
当输入类型混合时,$pow
将较小的输入类型提升为两个中较大的类型。一个类型被认为更大,当它代表更广泛的值范围时。数值类型从小到大的顺序是:整数 → 长整数 → 双精度浮点数 → 十进制数
输入类型的较大者还决定了结果类型,除非操作溢出且超出该较大数据类型所表示的范围。在溢出的情况下,$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 }