Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

$mod

이 페이지의 내용

  • 정의
  • 구문
  • 행동
  • 예시
$mod

필드의 값을 제수로 나눈 값에 지정된 나머지가 있는 문서를 선택합니다. 즉, $mod은 모듈로 연산을 수행하여 문서를 선택합니다. 첫 번째 인수는 피제수이고 두 번째 인수는 제수입니다.

$mod 표현식을 지정하려면 다음 구문을 사용하세요.

{ field: { $mod: [ divisor, remainder ] } }

$mod 연산자는 [ divisor, remainder ] 배열에 2개보다 적거나 많은 요소가 포함된 경우 오류를 반환합니다. 예제는 각각 Not Enough Elements Error 항목과 Too Many Elements Error 항목을 참조합니다.

또한 MongoDB 5.0.4 부터는 $moddivisor 또는 remainder 값이 다음과 같이 평가되는 경우 오류를 반환합니다.

  • NaN (숫자가 아님).

  • Infinity.

  • 64비트 정수를 사용하여 나타낼 수 없는 값입니다.

collection의 문서에 값이 NaN (숫자가 아님) 또는 Infinity인 필드가 포함된 경우 $mod 는 해당 문서를 출력에 포함하지 않습니다.

피제수가 음수이면 나머지도 음수입니다. 이 동작에 대한 자세한 내용은 공식 JavaScript 문서를 참조하세요 .

예시는 음수 피제수를 참조하세요.

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에서 -00과 같을 때 qty의 나머지가 -0이기 때문에 두 개의 문서를 반환합니다. 이 등식에 대한 자세한 내용은 공식 JavaScript 문서를 참조하세요.

결과:

[
{ _id: 1, item: 'abc123', qty: 0 },
{ _id: 3, item: 'ijk123', qty: 12 }
]

돌아가기

$jsonSchema

이 페이지의 내용