$mul
정의
$mul
필드 값에 숫자를 곱합니다.
$mul
표현식을 지정하려면 다음 프로토타입을 사용합니다.{ $mul: { <field1>: <number1>, ... } } 업데이트할 필드에는 숫자 값이 포함되어야 합니다.
내장된 문서나 배열에
<field>
를 지정하려면 점 표기법을 사용합니다.
행동
MongoDB 5.0부터 빈 피연산자 표현식( { }
)과 함께 $mul
과 같은 업데이트 연산자를 사용할 때 mongod
에서 더 이상 오류가 발생하지 않습니다. 업데이트가 비어 있으면 변경 사항이 없으며 oplog 항목이 생성되지 않습니다(즉, 작업이 작동하지 않음을 의미합니다).
MongoDB 5.0부터 업데이트 연산자는 문자열 기반 이름이 있는 문서 필드를 사전순으로 처리합니다. 숫자 이름이 있는 필드는 숫자 순서대로 처리됩니다. 자세한 내용은 업데이트 운영자 동작을 참조하십시오.
누락된 필드
필드가 문서에 존재하지 않는 경우 $mul
는 필드를 만들고 승수와 동일한 숫자 유형의 값을 0으로 설정합니다.
원자
$mul
는 단일 문서 내에서 원자적으로 수행되는 연산입니다.
혼합 유형
혼합된 숫자 유형(32비트 정수, 64비트 정수, 부동소수점)의 값과의 곱셈은 숫자 유형의 변환을 초래할 수 있습니다. 혼합 숫자 형식의 값을 곱하는 경우 다음 형식 변환 규칙이 적용됩니다.
32비트 정수 | 64비트 정수 | 플 로트 | |
---|---|---|---|
32비트 정수 | 32비트 또는 64비트 정수 | 64비트 정수 | 플 로트 |
64비트 정수 | 64비트 정수 | 64비트 정수 | 플 로트 |
플 로트 | 플 로트 | 플 로트 | 플 로트 |
참고
두 개의 32비트 정수의 곱이 32비트 정수의 최대값을 초과하는 경우 결과는 64비트 정수입니다.
64비트 정수의 최대값을 초과하는 모든 유형의 정수 연산에서는 오류가 발생합니다.
예제
필드 값 곱하기
products
컬렉션을 생성합니다.
db.products.insertOne( { "_id" : 1, "item" : "Hats", "price" : Decimal128("10.99"), "quantity" : 25 } )
다음 작업에서 db.collection.updateOne()
은 문서를 업데이트합니다. $mul
연산자는 price
필드에 1.25
를 곱하고 quantity
필드에 2
를 곱합니다:
db.products.updateOne( { _id: 1 }, { $mul: { price: Decimal128( "1.25" ), quantity: 2 } } )
업데이트된 문서에서:
price
는 원래 값인 10.99에 1.25를 곱한 값입니다.quantity
는 원래 값인 25에 2를 곱한 값입니다.
{ _id: 1, item: 'Hats', price: Decimal128("13.7375"), quantity: 50 }
존재하지 않는 필드에 연산자적용 $mul
다음 문서를 products
컬렉션에 추가합니다:
db.products.insertOne( { _id: 2, item: "Unknown" } )
다음 작업에서 db.collection.updateOne()
은 문서에 없는 필드에 $mul
연산자를 적용하려고 시도합니다.
db.products.updateOne( { _id: 2 }, { $mul: { price: Decimal128("100") } } )
price
필드를 삽입합니다.Decimal128("0")을 설정합니다.
{ "_id" : 2, "item" : "Unknown", "price" : NumberLong(0) }
필드는 price
는 승수와 동일한 유형인 Decimal128입니다.
혼합 숫자 유형 곱하기
다음 문서를 products
컬렉션에 추가합니다:
db.products.insertOne( { _id: 3, item: "Scarf", price: Decimal128("10") } )
다음 연산에서 db.collection.updateOne()
는 $mul
연산자를 사용하여 price
필드의 값에 십진수128(10) 를 Int32(5)로 곱합니다.
db.products.updateOne( { _id: 3 }, { $mul: { price: Int32(5) } } )
이 연산을 수행하면 다음 문서가 생성됩니다.
{ _id: 3, item: 'Scarf', price: Decimal128("50") }
price
필드의 값은 십진수128 유형입니다. 자세한 내용은 곱셈 유형 변환 규칙 을 참조하세요.