Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$pow(聚合)

在此页面上

  • 定义
  • 行为
  • 例子
$pow

将一个数字提升到指定的指数并返回结果。 $pow的语法如下:

{ $pow: [ <number>, <exponent> ] }

<number>表达式可以是任何有效的表达式,只要它解析为数字即可。

<exponent> 表达式可以是任何有效的表达式,前提是它能解析为数字。

不能将 0 提高到负指数。

当混合输入类型时,$pow 会将较小的输入类型提升为两者中较大的输入类型。当一个类型表示更广泛的值时,该类型被视为较大。数字类型从小到大的顺序为:integer → long → double → decimal

较大的输入类型也决定了结果类型,除非操作溢出,超出了较大数据类型所代表的范围。在溢出的情况下,$pow 按照以下顺序推送结果:

  • 如果较大的输入类型为 integer,则结果类型将提升为 long

  • 如果较大的输入类型为 long,则结果类型将提升为 double

  • 如果较大的类型是 doubledecimal,则溢出结果表示为 + 或 - 无穷大。没有对结果进行类型推送。

如果任一参数解析为 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 }

后退

$percentile

在此页面上