$pow (aggregation)
Definition
New in version 3.2.
Raises a number to the specified exponent and returns the result.$pow
has the following syntax:
- { $pow: [ <number>, <exponent> ] }
The <number>
expression can be any valid expression as long as it resolves to a number.
The <exponent>
expression can be any valid expression as long as it resolves to a number.
You cannot raise 0
to a negative exponent.
Behavior
The result will have the same type as the input except when itcannot be represented accurately in that type. In these cases:
- A 32-bit integer will be converted to a 64-bit integer if theresult is representable as a 64-bit integer.
- A 32-bit integer will be converted to a double if the result isnot representable as a 64-bit integer.
- A 64-bit integer will be converted to double if the result is notrepresentable as a 64-bit integer.
If either argument resolves to a value of null
or refers to a field that ismissing, $pow
returns null
. If either argument resolves toNaN
, $pow
returns NaN
.
Example | Results |
---|---|
{ $pow: [ 5, 0 ] } | 1 |
{ $pow: [ 5, 2 ] } | 25 |
{ $pow: [ 5, -2 ] } | 0.04 |
{ $pow: [ -5, 0.5 ] } | NaN |
Example
A collection named quizzes
contains the following documents:
- {
- "_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
- }
- ]
- }
The following example calculates the variance for each quiz:
- db.quizzes.aggregate([
- { $project: { variance: { $pow: [ { $stdDevPop: "$scores.score" }, 2 ] } } }
- ])
The operation returns the following results:
- { "_id" : 1, "variance" : 64.66666666666667 }
- { "_id" : 2, "variance" : 64.66666666666667 }