Definición
$powEleva un número al exponente especificado y devuelve el resultado.
$powtiene la siguiente sintaxis:{ $pow: [ <number>, <exponent> ] } La expresión
<number>puede ser cualquier valor válido. expresión siempre que se resuelva en un número.La
<exponent>expresión puede ser cualquier expresión válida siempre que se resuelva en un número.No puedes elevar
0a un exponente negativo.
Comportamiento
Cuando se mezclan los tipos de entrada, $pow promueve el tipo de entrada menor al mayor de los dos. Un tipo se considera mayor cuando representa un rango más amplio de valores. El orden de los tipos numéricos, de menor a mayor, es: entero → largo → doble → decimal
El tipo de entrada mayor también determina el tipo de resultado, a menos que la operación se desborde y salga del rango representado por ese tipo de dato mayor. En casos de desbordamiento, $pow promueve el resultado según el siguiente orden:
Si el tipo de entrada más grande es
integer, el tipo de resultado se eleva along.Si el tipo de entrada más grande es
long, el tipo de resultado se eleva adouble.Si el tipo mayor es
doubleodecimal, el resultado del desbordamiento se representa como + o - infinito. No hay promoción de tipo del resultado.
Si alguno de los argumentos se resuelve como null o hace referencia a un campo faltante, $pow devuelve null. Si alguno de los argumentos se resuelve como NaN, $pow devuelve NaN.
Ejemplo | Resultados |
|---|---|
|
|
|
|
|
|
|
|
Ejemplo
Crea una colección llamada quizzes con los siguientes documentos:
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 } ] } ] )
El siguiente ejemplo calcula la varianza para cada prueba:
db.quizzes.aggregate( [ { $project: { variance: { $pow: [ { $stdDevPop: "$scores.score" }, 2 ] } } } ] )
La operación devuelve los siguientes resultados:
{ _id : 1, variance : 64.66666666666667 } { _id : 2, variance : 64.66666666666667 }