$pow (agregação)
Nesta página
Definição
$pow
Cria um número para o expoente especificado e retorna o resultado.
$pow
tem a seguinte sintaxe:{ $pow: [ <number>, <exponent> ] } A expressão
<number>
pode ser qualquerexpressão válida, desde que seja resolvida como um número.A expressão
<exponent>
pode ser qualquer expressão válida, desde que seja resolvida como um número.Você não pode elevar
0
a um expoente negativo.
Comportamento
O resultado terá o mesmo tipo da entrada, exceto quando não puder ser representado com precisão nesse tipo. Nesses casos:
Um número inteiro de 32 bits será convertido para um número inteiro de 64 bits se o resultado for representável como um número inteiro de 64 bits.
Um inteiro de 32 bits será convertido em double se o resultado não for representável como um inteiro de 64 bits.
Um número inteiro de 64 bits será convertido em double se o resultado não for representável como um número inteiro de 64 bits.
Se qualquer um dos argumentos for resolvido para um valor de null
ou se referir a um campo ausente, $pow
retornará null
. Se qualquer um dos argumentos se resolver em NaN
, $pow
retornará NaN
.
Exemplo | Resultados |
---|---|
{ $pow: [ 5, 0 ] } | 1 |
{ $pow: [ 5, 2 ] } | 25 |
{ $pow: [ 5, -2 ] } | 0.04 |
{ $pow: [ -5, 0.5 ] } | NaN |
Exemplo
Crie uma coleção chamada quizzes
com os seguintes 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 } ] } ] )
O exemplo a seguir calcula a variância de cada questionário:
db.quizzes.aggregate( [ { $project: { variance: { $pow: [ { $stdDevPop: "$scores.score" }, 2 ] } } } ] )
A operação retorna os seguintes resultados:
{ _id : 1, variance : 64.66666666666667 } { _id : 2, variance : 64.66666666666667 }