Bird
Raised Fist0
MongoDBquery~5 mins

$avg accumulator in MongoDB - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the $avg accumulator do in MongoDB aggregation?
It calculates the average (mean) value of numeric values for a group of documents.
Click to reveal answer
beginner
How do you use $avg to find the average score from a field named score in a collection?
Use { $group: { _id: null, averageScore: { $avg: "$score" } } } in an aggregation pipeline.
Click to reveal answer
intermediate
Can $avg be used on non-numeric fields?
No, $avg only works on numeric values. Non-numeric values are ignored.
Click to reveal answer
intermediate
What happens if $avg is used on an empty group of documents?
It returns null because there are no values to average.
Click to reveal answer
beginner
How is $avg different from $sum in MongoDB aggregation?
$avg calculates the mean value, while $sum adds all values together.
Click to reveal answer
What does the $avg accumulator return when used in a MongoDB aggregation?
AThe maximum value in the group
BThe total count of documents
CThe sum of all values
DThe average of numeric values in the group
Which MongoDB aggregation stage commonly uses $avg?
A<code>$match</code>
B<code>$group</code>
C<code>$project</code>
D<code>$sort</code>
What will $avg return if the group has no documents?
Anull
B0
CAn error
DInfinity
Can $avg be used to average string values?
AYes, it converts strings to numbers automatically
BOnly if used with <code>$toDouble</code>
CNo, it only works with numeric values
DYes, but only if strings contain digits
Which of these is a correct use of $avg in an aggregation pipeline?
A{ $group: { _id: "$category", avgPrice: { $avg: "$price" } } }
B{ $match: { avgPrice: { $avg: "$price" } } }
C{ $sort: { avgPrice: { $avg: "$price" } } }
D{ $project: { avgPrice: { $avg: "$price" } } }
Explain how the $avg accumulator works in MongoDB aggregation.
Think about how you find an average in real life.
You got /4 concepts.
    Describe a simple example of using $avg to find the average score from a collection.
    Imagine you want the average test score of all students.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the $avg accumulator do in a MongoDB aggregation pipeline?
      easy
      A. Calculates the average value of numeric fields in grouped documents
      B. Counts the total number of documents in a collection
      C. Finds the maximum value in a group of documents
      D. Sorts documents in ascending order

      Solution

      1. Step 1: Understand the purpose of $avg

        The $avg accumulator is designed to calculate the mean (average) of numeric values within grouped documents in an aggregation pipeline.
      2. Step 2: Compare with other accumulators

        Other accumulators like $sum, $max, and $count perform different tasks, so $avg specifically calculates averages.
      3. Final Answer:

        Calculates the average value of numeric fields in grouped documents -> Option A
      4. Quick Check:

        $avg = average calculation [OK]
      Hint: Remember: $avg means average, not count or max [OK]
      Common Mistakes:
      • Confusing $avg with $sum or $count
      • Thinking $avg sorts data
      • Assuming $avg works outside aggregation
      2. Which of the following is the correct syntax to calculate the average of the field score in a MongoDB aggregation $group stage?
      easy
      A. { $group: { _id: null, avgScore: { $average: "$score" } } }
      B. { $group: { _id: null, avgScore: { $avg: "$score" } } }
      C. { $group: { _id: null, avgScore: { avg: "$score" } } }
      D. { $group: { _id: null, avgScore: { $sum: "$score" } } }

      Solution

      1. Step 1: Identify the correct accumulator name

        The correct MongoDB accumulator for average is $avg, not $average or avg.
      2. Step 2: Check the syntax structure

        The syntax requires the field name as a string with a $ prefix inside $avg, and the whole inside a $group stage with an _id.
      3. Final Answer:

        { $group: { _id: null, avgScore: { $avg: "$score" } } } -> Option B
      4. Quick Check:

        Correct syntax uses $avg with field string [OK]
      Hint: Use $avg exactly, with field as "$fieldName" [OK]
      Common Mistakes:
      • Using $average instead of $avg
      • Omitting quotes around field name
      • Using $sum instead of $avg
      3. Given the collection students with documents:
      { "name": "Alice", "score": 80 }, { "name": "Bob", "score": 90 }, { "name": "Charlie", "score": 70 }

      What will be the output of this aggregation?
      [{ $group: { _id: null, averageScore: { $avg: "$score" } } }]
      medium
      A. [{ "_id": null, "averageScore": 240 }]
      B. [{ "_id": null, "averageScore": 70 }]
      C. [{ "_id": null, "averageScore": 80 }]
      D. [{ "_id": null, "averageScore": 90 }]

      Solution

      1. Step 1: Calculate the sum of scores

        Sum = 80 + 90 + 70 = 240.
      2. Step 2: Calculate the average

        Average = 240 / 3 = 80.
      3. Final Answer:

        [{ "_id": null, "averageScore": 80 }] -> Option C
      4. Quick Check:

        Average of 80, 90, 70 = 80 [OK]
      Hint: Add all scores, divide by count for average [OK]
      Common Mistakes:
      • Using sum instead of average
      • Picking minimum or maximum score
      • Forgetting to divide by number of documents
      4. Consider this aggregation pipeline:
      [{ $group: { _id: "$class", avgScore: { $avg: score } } }]

      What is the error in this pipeline?
      medium
      A. Cannot use $avg inside $group
      B. Missing $match stage before $group
      C. The _id field cannot be "$class"
      D. Field name 'score' should be a string with $ prefix: "$score"

      Solution

      1. Step 1: Check the field reference inside $avg

        The field name must be a string with a $ prefix, so it should be "$score", not score.
      2. Step 2: Validate other parts of the pipeline

        Using "$class" as _id is valid, and $avg is allowed inside $group. $match is optional.
      3. Final Answer:

        Field name 'score' should be a string with $ prefix: "$score" -> Option D
      4. Quick Check:

        Field names in $avg need "$field" format [OK]
      Hint: Always quote field names with $ in accumulators [OK]
      Common Mistakes:
      • Using unquoted field names inside $avg
      • Thinking $match is mandatory before $group
      • Believing _id cannot be a field name
      5. You have a collection sales with documents:
      { "region": "North", "amount": 100 }, { "region": "South", "amount": 200 }, { "region": "North", "amount": 300 }, { "region": "South", "amount": 400 }

      Write an aggregation pipeline to find the average sales amount per region and identify the region with the highest average sales.
      hard
      A. [{ $group: { _id: "$region", avgAmount: { $avg: "$amount" } } }, { $sort: { avgAmount: -1 } }, { $limit: 1 }]
      B. [{ $group: { _id: "$region", avgAmount: { $sum: "$amount" } } }, { $sort: { avgAmount: 1 } }]
      C. [{ $group: { _id: "$region", avgAmount: { $avg: "$amount" } } }, { $match: { avgAmount: { $gt: 300 } } }]
      D. [{ $group: { _id: "$region", avgAmount: { $avg: "$amount" } } }, { $sort: { avgAmount: 1 } }, { $limit: 1 }]

      Solution

      1. Step 1: Group by region and calculate average

        Use $group with _id: "$region" and $avg: "$amount" to get average sales per region.
      2. Step 2: Sort descending by average and limit to top

        Sort by avgAmount descending (-1) to get highest average first, then limit to 1 document.
      3. Final Answer:

        [{ $group: { _id: "$region", avgAmount: { $avg: "$amount" } } }, { $sort: { avgAmount: -1 } }, { $limit: 1 }] -> Option A
      4. Quick Check:

        Group, sort descending, limit 1 = highest average [OK]
      Hint: Group by region, avg, sort desc, limit 1 for highest [OK]
      Common Mistakes:
      • Using $sum instead of $avg for average
      • Sorting ascending to get highest average
      • Not limiting results to top 1
      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