# $pow (aggregation)¶

On this page

## Definition¶

`$pow`

¶*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 it cannot be represented accurately in that type. In these cases:

- A 32-bit integer will be converted to a 64-bit integer if the result is representable as a 64-bit integer.
- A 32-bit integer will be converted to a double if the result is not representable as a 64-bit integer.
- A 64-bit integer will be converted to double if the result is not representable as a 64-bit integer.

If either argument resolves to a value of `null`

or refers to a field that is
missing, `$pow`

returns `null`

. If either argument resolves to
`NaN`

, `$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 }