$mod (애그리게이션)
정의
구문
$mod
표현식의 구문은 다음과 같습니다.
{ $mod: [ <expression1>, <expression2> ] }
첫 번째 인수는 피제수이고 두 번째 인수는 제수입니다. 즉, 첫 번째 인수를 두 번째 인수로 나눕니다.
행동
인수는 숫자로 해석되는 한 유효한 표현식 이 될 수 있습니다. 표현식에 대한 자세한 내용은 표현식을 참조하세요 .
버전 7.2부터 $mod
연산자의 출력 데이터 유형은 두 입력 데이터 유형 중 더 큰 데이터 유형입니다.
참고
7.2 버전 이전에는 입력의 값과 필드 유형에 따라 $mod
출력 유형이 결정되었습니다.
제수는
double
유형이지만 정수 값을 갖습니다.피제수는
int
또는long
유형입니다.
이 경우 MongoDB는 모드 연산을 수행하기 전에 제수를 배당 데이터 유형으로 변환합니다. 출력 데이터 유형은 피제수 데이터 유형입니다.
음수 피제수
피제수가 음수이면 나머지도 음수입니다. 이 동작에 대한 자세한 내용은 공식 JavaScript 문서 를 참조하세요. .
예시는 음수 피제수를 참조하세요.
예제
다음 문서가 포함된 conferencePlanning
collection을 생각해 보세요.
db.conferencePlanning.insertMany( [ { "_id" : 1, "city" : "New York", "hours" : 80, "tasks" : 7 }, { "_id" : 2, "city" : "Singapore", "hours" : 40, "tasks" : 4 } ] )
다음 집계에서는 $mod
표현식을 사용하여 hours
필드의 나머지를 tasks
필드로 나눈 값을 반환합니다.
db.conferencePlanning.aggregate( [ { $project: { remainder: { $mod: [ "$hours", "$tasks" ] } } } ] )
이 연산은 다음과 같은 결과를 반환합니다.
[ { '_id' : 1, 'remainder' : 3 }, { '_id' : 2, 'remainder' : 0 } ]
음수 피제수
다음 문서가 포함된 modExample
을 생각해 보겠습니다.
db.modExample.insertOne( [ { "_id" : 1, "dividend": -13, "divisor": 9 } ] )
이 집계는 $mod
표현식을 사용하여 dividend
의 나머지를 divisor
필드로 나눈 값을 반환합니다:
db.modExample.aggregate( [ { $project: { remainder: { $mod: [ "$dividend", "$divisor" ] } } } ] )
이 연산은 다음과 같은 결과를 반환합니다.
[ { '_id' : 1, 'remainder' : -4 } ]