$mod
정의
구문
$mod
표현식을 지정하려면 다음 구문을 사용하세요.
{ field: { $mod: [ divisor, remainder ] } }
행동
$mod
연산자는 [ divisor, remainder ]
배열에 2개보다 적거나 많은 요소가 포함된 경우 오류를 반환합니다. 예시는 각각 요소 부족 오류 및 요소 너무 많음 오류를 참조하세요.
또한 MongoDB 5.0.4 부터는 $mod
는 divisor
또는 remainder
값이 다음과 같이 평가되는 경우 오류를 반환합니다.
NaN
(숫자가 아님).Infinity
.64비트 정수를 사용하여 나타낼 수 없는 값입니다.
collection의 문서에 값이 NaN
(숫자가 아님) 또는 Infinity
인 필드가 포함된 경우 $mod
는 해당 문서를 출력에 포함하지 않습니다.
음수 피제수
피제수가 음수이면 나머지도 음수입니다. 이 동작에 대한 자세한 내용은 공식 JavaScript 문서를 참조하세요 .
예시는 음수 피제수를 참조하세요.
예제
를 $mod
사용하여 문서 선택
inventory
collection을 만듭니다.
db.inventory.insertMany( [ { "_id" : 1, "item" : "abc123", "qty" : 0 }, { "_id" : 2, "item" : "xyz123", "qty" : 5 }, { "_id" : 3, "item" : "ijk123", "qty" : 12 } ] )
이후 다음의 쿼리는 inventory
collection에서 qty
필드 modulo 4
값이 0
인 문서를 선택합니다.
db.inventory.find( { qty: { $mod: [ 4, 0 ] } } )
이 쿼리는 다음 문서를 반환합니다.
[ { '_id' : 1, 'item' : 'abc123', 'qty' : 0 }, { '_id' : 3, 'item' : 'ijk123', 'qty' : 12 } ]
요소 부족 오류
요소가 두 개 미만인 배열을 전달하면 $mod
연산자에서 오류가 발생합니다.
단일 요소로 배열
다음 작업은 $mod
연산자에 단일 요소가 포함된 배열을 잘못 전달합니다.
db.inventory.find( { qty: { $mod: [ 4 ] } } )
해당 문은 다음과 같은 오류를 발생시킵니다:
MongoServerError: malformed mod, not enough elements
빈 배열
다음 연산은 $mod
연산자에게 빈 배열을 잘못 전달합니다.
db.inventory.find( { qty: { $mod: [ ] } } )
해당 문은 다음과 같은 오류를 발생시킵니다:
MongoServerError: malformed mod, not enough elements
요소가 너무 많음 오류
두 개 이상의 요소가 있는 배열을 전달하면 $mod
연산자에서 오류가 발생합니다.
예를 들어, 다음 연산은 4개의 요소가 포함된 배열에 $mod
연산자를 사용하려고 시도합니다.
db.inventory.find( { qty: { $mod: [ 4, 1, 2, 3 ] } } )
해당 문은 다음과 같은 오류를 발생시킵니다:
MongoServerError: malformed mod, too many elements
부동 소수점 인수
표현식은 $mod
10진수 입력을 0으로 반올림합니다.
다음 예시는 이러한 동작을 보여줍니다.
예제
입력 쿼리:
db.inventory.find( { qty: { $mod: [ 4.0, 0 ] } } )
결과:
[ { _id: 1, item: 'abc123', qty: 0 }, { _id: 3, item: 'ijk123', qty: 12 } ]
예제
입력 쿼리:
db.inventory.find( { qty: { $mod: [ 4.5, 0 ] } } )
결과:
[ { _id: 1, item: 'abc123', qty: 0 }, { _id: 3, item: 'ijk123', qty: 12 } ]
예제
입력 쿼리:
db.inventory.find( { qty: { $mod: [ 4.99, 0 ] } } )
결과:
[ { _id: 1, item: 'abc123', qty: 0 }, { _id: 3, item: 'ijk123', qty: 12 } ]
각 쿼리는 소수점에 관계없이 4
을(를) $mod
표현식에 적용하여 동일한 결과 집합을 생성합니다.
음수 피제수
$mod
표현식은 피제수가 음수일 때 음수 결과를 생성합니다.
다음 예시는 이러한 동작을 보여줍니다.
예제
입력 쿼리:
db.inventory.find( { qty: { $mod: [ -4, -0 ] } } )
이 쿼리는 피제수가 음수이고 JavaScript에서 -0
은 0
과 같을 때 qty
의 나머지가 -0
이기 때문에 두 개의 문서를 반환합니다. 이 등식에 대한 자세한 내용은 공식 JavaScript 문서를 참조하세요.
결과:
[ { _id: 1, item: 'abc123', qty: 0 }, { _id: 3, item: 'ijk123', qty: 12 } ]