Bird
Raised Fist0
MongoDBquery~5 mins

$sum accumulator in MongoDB - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the $sum accumulator do in MongoDB aggregation?
It adds up all the numeric values from the documents in a group and returns the total sum.
Click to reveal answer
beginner
How do you use $sum to count the number of documents in a group?
Use $sum: 1 inside $group stage to add 1 for each document, effectively counting them.
Click to reveal answer
intermediate
Can $sum be used with non-numeric fields?
No, $sum only works with numeric values. Non-numeric values will cause errors or be ignored.
Click to reveal answer
beginner
Example: What does this aggregation do?
{ $group: { _id: "$category", total: { $sum: "$price" } } }
It groups documents by the category field and calculates the total sum of the price field for each category.
Click to reveal answer
intermediate
What happens if you use $sum with a field that sometimes is missing in documents?
Missing fields are treated as null and do not add to the sum. Only existing numeric values are summed.
Click to reveal answer
What is the purpose of the $sum accumulator in MongoDB?
ATo sort documents by a field
BTo find the average of numeric values
CTo add numeric values in grouped documents
DTo count the number of fields in a document
How can you count documents using $sum in an aggregation?
AUse <code>$sum: 1</code>
BUse <code>$sum: "$field"</code>
CUse <code>$sum: null</code>
DUse <code>$sum: true</code>
What happens if $sum is used on a non-numeric field?
AIt throws an error or ignores non-numeric values
BIt sums the values as strings
CIt converts values to numbers automatically
DIt counts the number of documents
In this aggregation, what does { $sum: "$price" } do?
{ $group: { _id: "$category", total: { $sum: "$price" } } }
ACounts documents per category
BFinds the max price per category
CSorts categories by price
DSums the price values per category
If some documents lack the field used in $sum, what happens?
AMissing fields count as zero in the sum
BMissing fields are ignored and do not add to the sum
CThe aggregation fails
DThe sum includes null values
Explain how the $sum accumulator works in MongoDB aggregation and give an example use case.
Think about adding numbers or counting items in groups.
You got /4 concepts.
    What should you be careful about when using $sum with fields that might be missing or non-numeric?
    Consider data types and missing data.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the $sum accumulator do in a MongoDB aggregation pipeline?
      easy
      A. Adds values together or counts documents within groups
      B. Finds the average value of a field
      C. Sorts documents in ascending order
      D. Filters documents based on a condition

      Solution

      1. Step 1: Understand the role of $sum

        The $sum accumulator adds numeric values or counts documents when used in a $group stage.
      2. Step 2: Compare with other accumulators

        Unlike $avg which calculates averages, $sum only totals values or counts documents.
      3. Final Answer:

        Adds values together or counts documents within groups -> Option A
      4. Quick Check:

        $sum = Adds or counts [OK]
      Hint: Remember: $sum totals numbers or counts docs [OK]
      Common Mistakes:
      • Confusing $sum with $avg
      • Thinking $sum sorts data
      • Assuming $sum filters documents
      2. Which of the following is the correct syntax to sum the field price in a $group stage?
      easy
      A. { $group: { _id: null, total: { $sum: "price" } } }
      B. { $group: { _id: null, total: { $sum: "$price" } } }
      C. { $group: { _id: null, total: { $sum: price } } }
      D. { $group: { _id: null, total: { sum: "$price" } } }

      Solution

      1. Step 1: Identify correct field reference syntax

        In MongoDB aggregation, field names must be prefixed with "$" inside expressions, so "$price" is correct.
      2. Step 2: Check accumulator syntax

        The accumulator must be $sum, not sum, and the value must be a string with "$" prefix.
      3. Final Answer:

        { $group: { _id: null, total: { $sum: "$price" } } } -> Option B
      4. Quick Check:

        Use $sum with "$field" syntax [OK]
      Hint: Use "$field" inside $sum in $group [OK]
      Common Mistakes:
      • Omitting the $ before field name
      • Using sum instead of $sum
      • Not quoting the field name
      3. Given the collection documents:
      { "category": "A", "value": 10 }
      { "category": "A", "value": 20 }
      { "category": "B", "value": 5 }

      What will be the output of this aggregation?
      [{ $group: { _id: "$category", totalValue: { $sum: "$value" } } }]
      medium
      A. [{ "_id": "A", "totalValue": 30 }, { "_id": "B", "totalValue": 5 }]
      B. [{ "_id": "A", "totalValue": 10 }, { "_id": "B", "totalValue": 5 }]
      C. [{ "_id": "A", "totalValue": 20 }, { "_id": "B", "totalValue": 5 }]
      D. [{ "_id": null, "totalValue": 35 }]

      Solution

      1. Step 1: Group documents by category

        Documents with category "A" are grouped together, and category "B" separately.
      2. Step 2: Sum the "value" fields per group

        For category "A": 10 + 20 = 30; for category "B": 5.
      3. Final Answer:

        [{ "_id": "A", "totalValue": 30 }, { "_id": "B", "totalValue": 5 }] -> Option A
      4. Quick Check:

        Sum values per category [OK]
      Hint: Sum values grouped by _id field [OK]
      Common Mistakes:
      • Summing without grouping
      • Using null _id causing single group
      • Adding only one document's value
      4. Consider this aggregation pipeline:
      [{ $group: { _id: "$type", total: { $sum: value } } }]

      What is the error in this pipeline?
      medium
      A. The _id field cannot be a string
      B. Missing $group stage
      C. Cannot use $sum inside $group
      D. Field name 'value' should be quoted and prefixed with $ inside $sum

      Solution

      1. Step 1: Check field reference inside $sum

        The field 'value' must be referenced as "$value" (string with $ prefix) inside $sum.
      2. Step 2: Confirm correct $group usage

        The $group stage is present and _id is correctly set to "$type".
      3. Final Answer:

        Field name 'value' should be quoted and prefixed with $ inside $sum -> Option D
      4. Quick Check:

        Use "$field" inside $sum [OK]
      Hint: Always quote and prefix field with $ inside $sum [OK]
      Common Mistakes:
      • Using unquoted field names inside $sum
      • Thinking $sum can't be used in $group
      • Misunderstanding _id usage
      5. You have a collection of sales documents with fields store and amount. You want to find the total sales per store but only for stores with total sales above 1000. Which aggregation pipeline correctly uses $sum and filters the results?
      hard
      A. [{ $match: { amount: { $gt: 1000 } } }, { $group: { _id: "$store", totalSales: { $sum: "$amount" } } }]
      B. [{ $group: { _id: "$store", totalSales: { $sum: "$amount" } } }, { $match: { amount: { $gt: 1000 } } }]
      C. [{ $group: { _id: "$store", totalSales: { $sum: "$amount" } } }, { $match: { totalSales: { $gt: 1000 } } }]
      D. [{ $group: { _id: "$store", totalSales: { $sum: "$amount" } } }, { $match: { _id: { $gt: 1000 } } }]

      Solution

      1. Step 1: Group sales by store and sum amounts

        The first stage groups documents by "store" and sums the "amount" field into "totalSales".
      2. Step 2: Filter groups with totalSales greater than 1000

        The second stage uses $match on the aggregated field "totalSales" to keep only stores with totals above 1000.
      3. Final Answer:

        [{ $group: { _id: "$store", totalSales: { $sum: "$amount" } } }, { $match: { totalSales: { $gt: 1000 } } }] -> Option C
      4. Quick Check:

        Group then filter on sum field [OK]
      Hint: Group first, then filter on summed field [OK]
      Common Mistakes:
      • Filtering before grouping
      • Filtering on original amount instead of totalSales
      • Filtering on wrong field name
      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