Bird
Raised Fist0
MongoDBquery~10 mins

Arithmetic expressions ($add, $multiply, $divide) in MongoDB - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Arithmetic expressions ($add, $multiply, $divide)
Start with input documents
↓
Apply $add, $multiply, $divide
↓
Calculate values step-by-step
↓
Create new fields with results
↓
Output transformed documents
The flow starts with input documents, applies arithmetic expressions like $add, $multiply, and $divide to compute new values, then outputs documents with these calculated fields.
Execution Sample
MongoDB
db.sales.aggregate([
  { $project: {
      total: { $add: ["$price", "$tax"] },
      doublePrice: { $multiply: ["$price", 2] },
      pricePerItem: { $divide: ["$price", "$quantity"] }
    }
  }
])
This aggregation calculates total price with tax, doubles the price, and finds price per item for each sales document.
Execution Table
StepDocument$add Calculation$multiply Calculation$divide CalculationOutput Document
1{"price": 100, "tax": 10, "quantity": 5}100 + 10 = 110100 * 2 = 200100 / 5 = 20{"total": 110, "doublePrice": 200, "pricePerItem": 20}
2{"price": 50, "tax": 5, "quantity": 2}50 + 5 = 5550 * 2 = 10050 / 2 = 25{"total": 55, "doublePrice": 100, "pricePerItem": 25}
3{"price": 80, "tax": 8, "quantity": 4}80 + 8 = 8880 * 2 = 16080 / 4 = 20{"total": 88, "doublePrice": 160, "pricePerItem": 20}
ExitNo more documents---Aggregation ends
💡 All documents processed, aggregation pipeline completes.
Variable Tracker
VariableStartAfter Doc 1After Doc 2After Doc 3Final
$add result (total)-110558888
$multiply result (doublePrice)-200100160160
$divide result (pricePerItem)-20252020
Key Moments - 3 Insights
Why does $divide return a decimal if inputs are integers?
In the execution_table, $divide calculates price divided by quantity. If the division is exact, it returns an integer; otherwise, it returns a decimal. Here, all divisions are exact, so results are integers.
Can $add combine more than two values?
Yes, $add can sum multiple values. In the example, it adds price and tax, but you could add more fields or numbers by listing them inside the array.
What happens if quantity is zero in $divide?
Dividing by zero causes an error. The aggregation would fail or skip that document depending on error handling. This example assumes quantity is never zero.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the $multiply result for the second document?
A55
B100
C25
D200
💡 Hint
Check the $multiply Calculation column for Step 2 in the execution_table.
At which step does the $add calculation equal 110?
AStep 1
BStep 2
CStep 3
DExit
💡 Hint
Look at the $add Calculation column in the execution_table to find 110.
If quantity was zero in the first document, what would happen to $divide?
AIt would return null
BIt would return zero
CIt would cause an error
DIt would skip division
💡 Hint
Refer to key_moments about division by zero behavior.
Concept Snapshot
MongoDB arithmetic expressions:
- $add sums values: {$add: [val1, val2, ...]}
- $multiply multiplies: {$multiply: [val1, val2, ...]}
- $divide divides: {$divide: [val1, val2]}
Use in aggregation to compute new fields.
Division by zero causes errors.
Supports numbers and field references.
Full Transcript
This visual execution shows how MongoDB arithmetic expressions $add, $multiply, and $divide work inside an aggregation pipeline. Each input document has fields price, tax, and quantity. The pipeline calculates total as price plus tax, doublePrice as price times two, and pricePerItem as price divided by quantity. Step by step, the calculations are done for each document, and the results are added as new fields. The variable tracker shows how these calculated values change after each document. Key moments clarify common confusions like division by zero and multiple additions. The quiz tests understanding of specific calculation results and error cases. This helps beginners see exactly how MongoDB computes arithmetic expressions in aggregation.

Practice

(1/5)
1. What does the MongoDB expression { $add: [5, 3] } do?
easy
A. Multiplies 5 and 3 to get 15
B. Adds 5 and 3 to get 8
C. Divides 5 by 3 to get 1.67
D. Subtracts 3 from 5 to get 2

Solution

  1. Step 1: Understand the $add operator

    The $add operator sums the numbers inside the array.
  2. Step 2: Calculate the sum of 5 and 3

    5 + 3 equals 8.
  3. Final Answer:

    Adds 5 and 3 to get 8 -> Option B
  4. Quick Check:

    $add: [5, 3] = 8 [OK]
Hint: Remember $add sums all values inside the array [OK]
Common Mistakes:
  • Confusing $add with $multiply
  • Thinking $add subtracts values
  • Assuming $add divides numbers
2. Which of the following is the correct syntax to multiply 4 by 7 using MongoDB arithmetic expressions?
easy
A. { $multiply: [4, 7] }
B. { $multiply: 4, 7 }
C. { $multiply: (4, 7) }
D. { multiply: [4, 7] }

Solution

  1. Step 1: Recall correct operator syntax

    MongoDB arithmetic operators use $ followed by the operator name and an array of values.
  2. Step 2: Check each option

    { $multiply: [4, 7] } uses $multiply with an array [4, 7], which is correct syntax.
  3. Final Answer:

    { $multiply: [4, 7] } -> Option A
  4. Quick Check:

    Correct syntax uses $multiply with array [OK]
Hint: Use square brackets [] for values in $multiply [OK]
Common Mistakes:
  • Omitting $ before multiply
  • Using parentheses instead of brackets
  • Passing values without array brackets
3. Given the MongoDB aggregation expression { $divide: [ { $multiply: [10, 5] }, 2 ] }, what is the result?
medium
A. 25
B. 100
C. 2.5
D. 50

Solution

  1. Step 1: Calculate the inner $multiply expression

    $multiply: [10, 5] equals 50.
  2. Step 2: Divide the result by 2

    $divide: [50, 2] equals 25.
  3. Final Answer:

    25 -> Option A
  4. Quick Check:

    (10 * 5) / 2 = 25 [OK]
Hint: Calculate inner expressions first, then outer [OK]
Common Mistakes:
  • Dividing 10 by 5 instead of multiplying
  • Forgetting to divide after multiplication
  • Mixing order of operations
4. Identify the error in this MongoDB expression: { $divide: [10, { $add: 2, 3 }] }
medium
A. There is no error; the expression is correct
B. The $divide operator cannot divide numbers
C. The numbers 10, 2, and 3 must be strings
D. The $add operator must have an array of values, not separate arguments

Solution

  1. Step 1: Check $add operator usage

    $add requires an array of values, but { $add: 2, 3 } uses separate arguments incorrectly.
  2. Step 2: Confirm correct syntax

    The correct syntax is { $add: [2, 3] } with square brackets.
  3. Final Answer:

    The $add operator must have an array of values, not separate arguments -> Option D
  4. Quick Check:

    $add needs array syntax [OK]
Hint: Always use square brackets [] for $add values [OK]
Common Mistakes:
  • Using commas instead of array brackets
  • Assuming $divide cannot divide numbers
  • Passing numbers as strings
5. You want to calculate the average price of items stored in a MongoDB collection using aggregation. Which expression correctly calculates the average price if you have total price as { $add: ["$price1", "$price2", "$price3"] } and want to divide by 3?
hard
A. { $multiply: [ { $add: ["$price1", "$price2", "$price3"] }, 3 ] }
B. { $add: [ { $divide: ["$price1", 3] }, { $divide: ["$price2", 3] }, { $divide: ["$price3", 3] } ] }
C. { $divide: [ { $add: ["$price1", "$price2", "$price3"] }, 3 ] }
D. { $divide: [ 3, { $add: ["$price1", "$price2", "$price3"] } ] }

Solution

  1. Step 1: Understand the average formula

    Average = (sum of values) / number of values.
  2. Step 2: Check each option

    { $divide: [ { $add: ["$price1", "$price2", "$price3"] }, 3 ] } sums prices then divides by 3, matching the average formula.
  3. Final Answer:

    { $divide: [ { $add: ["$price1", "$price2", "$price3"] }, 3 ] } -> Option C
  4. Quick Check:

    Sum prices then divide by count = average [OK]
Hint: Sum first, then divide by count for average [OK]
Common Mistakes:
  • Dividing each price separately then adding
  • Multiplying sum by count instead of dividing
  • Dividing count by sum instead of sum by count
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard