Bird
Raised Fist0
MongoDBquery~5 mins

Arithmetic expressions ($add, $multiply, $divide) in MongoDB - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Arithmetic expressions ($add, $multiply, $divide)
O(n)
Understanding Time Complexity

When using arithmetic expressions like $add, $multiply, and $divide in MongoDB, it's important to know how the time to compute results grows as the data size grows.

We want to understand how the number of calculations changes when we process more documents.

Scenario Under Consideration

Analyze the time complexity of the following MongoDB aggregation snippet.


    db.sales.aggregate([
      {
        $set: {
          totalPrice: { $multiply: ["$price", "$quantity"] }
        }
      },
      {
        $set: {
          discountPrice: { $divide: ["$totalPrice", 2] }
        }
      },
      {
        $set: {
          finalPrice: { $add: ["$discountPrice", 10] }
        }
      }
    ])
    

This code calculates total, discounted, and final prices for each sale document.

Identify Repeating Operations

Look for repeated calculations or loops.

  • Primary operation: Arithmetic calculations ($multiply, $divide, $add) done once per document.
  • How many times: Once for each document in the collection.
How Execution Grows With Input

Each document requires a fixed number of arithmetic steps.

Input Size (n)Approx. Operations
1030 (3 operations x 10 documents)
100300 (3 operations x 100 documents)
10003000 (3 operations x 1000 documents)

Pattern observation: The total calculations grow directly with the number of documents.

Final Time Complexity

Time Complexity: O(n)

This means the time to compute grows in a straight line as you add more documents.

Common Mistake

[X] Wrong: "Arithmetic expressions run instantly no matter how many documents there are."

[OK] Correct: Each document needs its own calculations, so more documents mean more work.

Interview Connect

Understanding how simple arithmetic operations scale helps you explain performance in real database queries clearly and confidently.

Self-Check

"What if we added a nested $map to perform arithmetic on an array inside each document? How would the time complexity change?"

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