$pow (집계)
정의
행동
입력 타입이 혼합될 때 $pow
은 더 작은 입력 타입을 두 타입 중 더 큰 타입으로 승격합니다. 타입은 더 넓은 범위의 값을 표현할 수 있을 때 더 큰 것으로 간주됩니다. 숫자 타입은 작은 것부터 큰 것 순으로 integer → long → double → decimal입니다.
또한 더 큰 입력 유형은 결과 유형도 결정합니다. 단, 연산 오버플로가 발생하여 더 큰 데이터 유형이 나타내는 범위를 벗어나지 않아야 합니다. 오버플로의 경우 $pow
은 다음 순서에 따라 결과를 승격합니다.
두 인수 중 하나가 null
값으로 해석되거나 누락된 필드를 참조하는 경우 $pow
는 null
을 반환합니다. 두 인수 중 하나가 NaN
값으로 해석되면 $pow
는 NaN
을 반환합니다.
예시 | 결과 |
---|---|
{ $pow: [ 5, 0 ] } | 1 |
{ $pow: [ 5, 2 ] } | 25 |
{ $pow: [ 5, -2 ] } | 0.04 |
{ $pow: [ -5, 0.5 ] } | NaN |
예시
다음 문서를 사용하여 quizzes
라는 컬렉션을 만듭니다.
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 } ] } ] )
다음 예시에서는 각 퀴즈의 분산을 계산합니다.
db.quizzes.aggregate( [ { $project: { variance: { $pow: [ { $stdDevPop: "$scores.score" }, 2 ] } } } ] )
이 연산은 다음과 같은 결과를 반환합니다.
{ _id : 1, variance : 64.66666666666667 } { _id : 2, variance : 64.66666666666667 }