라운드(집계)
정의
$round
$round
(은)는 숫자를 정수 또는 지정된 소수점 이하 자릿수로 반올림/내림합니다.$round
의 구문은 다음과 같습니다:{ $round : [ <number>, <place> ] } 필드유형설명<number>
숫자숫자로 해석되는 모든 유효한 표현식 일 수 있습니다. 구체적으로 표현식 은 정수, double,
decimal
또는long
로 해석되어야 합니다.$round
표현식이 숫자가 아닌 데이터 유형으로 확인되면 오류를 반환합니다.<place>
integer선택 사항 -20에서 100 사이의 정수로 확인되는 유효한 표현식 일 수 있습니다(단, 제외). 예:
-20 < place < 100
. 지정하지 않으면 기본값은0
입니다.<place>
가 양의 정수로 해석되는 경우$round
를 소수점 이하<place>
자리까지 반올림합니다.예를 들어
$round : [1234.5678, 2]
은 소수점 둘째 자리로 반올림하여1234.57
을 반환합니다.<place>
가 음의 정수로 해석되는 경우$round
는 소수점 왼쪽에 있는 숫자<place>
를 사용하여 반올림합니다.예를 들어
$round : [1234.5678, -2]
은 소수점 왼쪽의 두 번째 자리(3
)를 사용하여1200
를 반환합니다.<place>
의 절대값이 소수점 왼쪽 자릿수와 같거나 초과하는 경우$round
는0
을 반환합니다.예를 들어,
$round : [ 1234.5678, -4]
소수점 왼쪽의 네 번째 숫자를 지정합니다. 이는 소수점에서 남은 자릿수와 같으며0
을 반환합니다.<place>
값이0
인 경우$round
는 소수점 오른쪽의 첫 번째 숫자를 사용하여 반올림하고 반올림된 정수 값을 반환합니다.예를 들어
$round : [1234.5678, 0]
은1235
을 반환합니다.
행동
짝수 값으로 반올림
5
의 값을 반올림할 때 $round
는 가장 가까운 짝수 값으로 반올림합니다. 예를 들어 다음 문서를 가정해 보겠습니다.
{_id : 1, "value" : 10.5}, {_id : 2, "value" : 11.5}, {_id : 3, "value" : 12.5}, {_id : 4, "value" : 13.5}
$round : [ "$value", 0]
다음을 반환합니다.
{_id : 1, "value" : 10}, {_id : 2, "value" : 12}, {_id : 3, "value" : 12}, {_id : 4, "value" : 14}
10.5
값은 짝수 값 10
에 가장 가깝고 값 11.5
및 12.5
값은 짝수 값 12
에 가장 가깝습니다. 가장 가까운 짝수 값으로 반올림하면 항상 상향 또는 하향 반올림보다 반올림된 데이터가 더 고르게 분포됩니다.
반환된 데이터 유형
반환된 데이터 유형 은 입력 표현식 또는 값의 데이터 유형 유형과 일치합니다.
null
, NaN
및 +/- Infinity
첫 번째 인수가
null
값으로 확인되거나 누락된 필드를 참조하는 경우$round
는null
를 반환합니다.첫 번째 인수가
NaN
으로 확인되면$round
는NaN
을 반환합니다.인자가 음수 또는 양수 무한대로 해석되면
$round
는 각각 음수 또는 양수 무한대를 반환합니다.
예시 | 결과 |
---|---|
{ $round: [ NaN, 1] } | NaN |
{ $round: [ null, 1] } | null |
{ $round : [ Infinity, 1 ] } | Infinity |
{ $round : [ -Infinity, 1 ] } | -Infinity |
예시
다음 문서를 사용하여 samples
라는 이름의 샘플 collection을 생성합니다.
db.samples.insertMany( [ { _id: 1, value: 19.25 }, { _id: 2, value: 28.73 }, { _id: 3, value: 34.32 }, { _id: 4, value: -45.39 } ] )
다음 집계는 소수점 첫째 자리로 반올림된
value
를 반환합니다.db.samples.aggregate([ { $project: { roundedValue: { $round: [ "$value", 1 ] } } } ]) 이 연산은 다음과 같은 결과를 반환합니다.
{ "_id" : 1, "roundedValue" : 19.2 } { "_id" : 2, "roundedValue" : 28.7 } { "_id" : 3, "roundedValue" : 34.3 } { "_id" : 4, "roundedValue" : -45.4 } 다음 집계는 소수점 왼쪽 첫 번째 숫자를 사용하여 반올림된
value
를 반환합니다.db.samples.aggregate([ { $project: { roundedValue: { $round: [ "$value", -1 ] } } } ]) 이 연산은 다음과 같은 결과를 반환합니다.
{ "_id" : 1, "roundedValue" : 10 } { "_id" : 2, "roundedValue" : 20 } { "_id" : 3, "roundedValue" : 30 } { "_id" : 4, "roundedValue" : -50 } 다음 집계는 정수로 반올림된
value
반환합니다.db.samples.aggregate([ { $project: { roundedValue: { $round: [ "$value", 0 ] } } } ]) 이 연산은 다음과 같은 결과를 반환합니다.
{ "_id" : 1, "roundedValue" : 19 } { "_id" : 2, "roundedValue" : 29 } { "_id" : 3, "roundedValue" : 34 } { "_id" : 4, "roundedValue" : -45 }