Docs Menu

$mul

On this page

  • Definition
  • Behavior
  • Examples
$mul

Multiply the value of a field by a number. To specify a $mul expression, use the following prototype:

{ $mul: { <field1>: <number1>, ... } }

The field to update must contain a numeric value.

To specify a <field> in an embedded document or in an array, use dot notation.

Starting in MongoDB 5.0, mongod no longer raises an error when you use an update operator like $mul with an empty operand expression ( { } ). An empty update results in no changes and no oplog entry is created (meaning that the operation is a no-op).

Starting in MongoDB 5.0, update operators process document fields with string-based names in lexicographic order. Fields with numeric names are processed in numeric order. See Update Operators Behavior for details.

If the field does not exist in a document, $mul creates the field and sets the value to zero of the same numeric type as the multiplier.

$mul is an atomic operation within a single document.

Multiplication with values of mixed numeric types (32-bit integer, 64-bit integer, float) may result in conversion of numeric type. For multiplication with values of mixed numeric types, the following type conversion rules apply:

32-bit Integer
64-bit Integer
Float
32-bit Integer
32-bit or 64-bit Integer
64-bit Integer
Float
64-bit Integer
64-bit Integer
64-bit Integer
Float
Float
Float
Float
Float
Note
  • If the product of two 32-bit integers exceeds the maximum value for a 32-bit integer, the result is a 64-bit integer.
  • Integer operations of any type that exceed the maximum value for a 64-bit integer produce an error.

Consider a collection products with the following document:

{ "_id" : 1, "item" : "ABC", "price" : NumberDecimal("10.99"), "qty" : 25 }

The following db.collection.update() operation updates the document, using the $mul operator to multiply the price by 1.25 and the qty field by 2:

db.products.update(
{ _id: 1 },
{ $mul: { price: NumberDecimal("1.25"), qty: 2 } }
)

The operation results in the following document, where the new value of price reflects the original value 10.99 multiplied by 1.25 and the new value of qty reflects the original value of 25 multipled by 2:

{ "_id" : 1, "item" : "ABC", "price" : NumberDecimal("13.7375"), "qty" : 50 }

Consider a collection products with the following document:

{ _id: 2, item: "Unknown" }

The following db.collection.update() operation updates the document, applying the $mul operator to the field price that does not exist in the document:

db.products.update(
{ _id: 2 },
{ $mul: { price: NumberLong(100) } }
)

The operation results in the following document with a price field set to value 0 of numeric type NumberLong, the same type as the multiplier:

{ "_id" : 2, "item" : "Unknown", "price" : NumberLong(0) }

Consider a collection products with the following document:

{ _id: 3, item: "XYZ", price: NumberLong(10) }

The following db.collection.update() operation uses the $mul operator to multiply the value in the price field NumberLong(10) by NumberInt(5):

db.products.update(
{ _id: 3 },
{ $mul: { price: NumberInt(5) } }
)

The operation results in the following document:

{ "_id" : 3, "item" : "XYZ", "price" : NumberLong(50) }

The value in the price field is of type NumberLong. See Multiplication Type Conversion Rules for details.

Tip
See also:
←  $max$rename →
Give Feedback
MongoDB logo
© 2021 MongoDB, Inc.

About

  • Careers
  • Legal Notices
  • Privacy Notices
  • Security Information
  • Trust Center
© 2021 MongoDB, Inc.