문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
$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 } ]