Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$pow (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$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.

Quando os tipos de entrada são mistos, $pow realiza o tipo de entrada menor para o maior dos dois. Um tipo é considerado maior quando representa uma faixa de valores mais ampla. A ordem dos tipos numéricos do menor para o maior é: inteiro → longo → duplo → decimal

O maior dos tipos de entrada também determina o tipo de resultado, a menos que a operação ultrapasse e esteja além do intervalo representado por esse tipo de dados maior. Em casos de transbordamento, o $pow realiza o resultado de acordo com a seguinte ordem:

  • Se o tipo de entrada maior for integer, o tipo de resultado será promovido para long.

  • Se o tipo de entrada maior for long, o tipo de resultado será promovido para double.

  • Se o tipo maior for double ou decimal, o resultado de transbordamento será representado como + ou - infinito. Não há nenhum tipo de promoção do resultado.

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

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 }

Voltar

$percentile