Bird
Raised Fist0
MongoDBquery~10 mins

$push accumulator for building arrays in MongoDB - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to use $push to add values to an array in aggregation.

MongoDB
db.collection.aggregate([{ $group: { _id: "$category", items: { [1]: "$item" } } }])
Drag options to blanks, or click blank then click option'
A$push
B$addToSet
C$sum
D$avg
Attempts:
3 left
💡 Hint
Common Mistakes
Using $sum or $avg instead of $push.
Confusing $push with $addToSet which avoids duplicates.
2fill in blank
medium

Complete the code to group documents by "type" and push "name" into an array.

MongoDB
db.products.aggregate([{ $group: { _id: "$type", names: { [1]: "$name" } } }])
Drag options to blanks, or click blank then click option'
A$push
B$max
C$sum
D$min
Attempts:
3 left
💡 Hint
Common Mistakes
Using $sum or $max which do not build arrays.
Forgetting to use $push inside $group.
3fill in blank
hard

Fix the error in the aggregation pipeline to correctly push "score" values into an array.

MongoDB
db.scores.aggregate([{ $group: { _id: "$player", scores: { [1]: "$score" } } }])
Drag options to blanks, or click blank then click option'
A$addToSet
B$avg
C$push
D$count
Attempts:
3 left
💡 Hint
Common Mistakes
Using $count which is not an accumulator for arrays.
Using $avg which calculates average instead of collecting values.
4fill in blank
hard

Fill both blanks to group by "department" and push "employee" names into an array.

MongoDB
db.employees.aggregate([{ $group: { _id: [1], staff: { [2]: "$employee" } } }])
Drag options to blanks, or click blank then click option'
A"$department"
B$push
C$sum
D"department"
Attempts:
3 left
💡 Hint
Common Mistakes
Using the field name without $ in _id.
Using $sum instead of $push for array building.
5fill in blank
hard

Fill all three blanks to group by "category", push "product" names, and filter only categories with more than 2 products.

MongoDB
db.products.aggregate([
  { $group: { _id: [1], products: { [2]: "$product" } } },
  { $match: { $expr: { $gt: [ { $[3]: "$products" }, 2 ] } } }
])
Drag options to blanks, or click blank then click option'
A"$category"
B$push
Clength
Dsize
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'length' instead of 'size' to check array length in $match.
Forgetting $ in the group _id field.

Practice

(1/5)
1. What does the $push accumulator do in a MongoDB aggregation pipeline?
easy
A. It removes duplicate values from an array.
B. It adds values to an array for each group in the aggregation.
C. It sorts the documents in the aggregation result.
D. It counts the number of documents in each group.

Solution

  1. Step 1: Understand the purpose of $push

    The $push accumulator collects values into an array for each group during aggregation.
  2. Step 2: Compare with other accumulators

    Unlike $addToSet which removes duplicates, $push simply appends values, allowing duplicates.
  3. Final Answer:

    It adds values to an array for each group in the aggregation. -> Option B
  4. Quick Check:

    $push = add values to array [OK]
Hint: Remember: $push always appends values to arrays [OK]
Common Mistakes:
  • Confusing $push with $addToSet which removes duplicates
  • Thinking $push sorts the array automatically
  • Assuming $push counts documents instead of collecting values
2. Which of the following is the correct syntax to use $push in a MongoDB aggregation $group stage?
easy
A. { $group: { _id: "$category", items: { $push: { "$item" } } } }
B. { $group: { _id: "$category", items: { $push: ["$item"] } } }
C. { $group: { _id: "$category", items: { $push: "$item" } } }
D. { $group: { _id: "$category", items: { push: "$item" } } }

Solution

  1. Step 1: Review correct $push syntax

    The $push operator requires a field name with a value to push, like $push: "$item".
  2. Step 2: Identify syntax errors in options

    { $group: { _id: "$category", items: { $push: ["$item"] } } } incorrectly uses an array around "$item". { $group: { _id: "$category", items: { $push: { "$item" } } } } uses braces instead of quotes. { $group: { _id: "$category", items: { push: "$item" } } } misses the $ sign before push.
  3. Final Answer:

    { $group: { _id: "$category", items: { $push: "$item" } } } -> Option C
  4. Quick Check:

    Correct $push syntax = { $group: { _id: "$category", items: { $push: "$item" } } } [OK]
Hint: Use $push: "fieldName" inside $group stage [OK]
Common Mistakes:
  • Forgetting the $ before push
  • Using arrays or objects incorrectly inside $push
  • Misplacing quotes around field names
3. Given the collection orders with documents:
{ "customer": "Alice", "product": "Pen" }
{ "customer": "Alice", "product": "Notebook" }
{ "customer": "Bob", "product": "Pen" }

What will be the result of this aggregation?
{ $group: { _id: "$customer", products: { $push: "$product" } } }
medium
A. [{ "_id": "Alice", "products": ["Pen", "Notebook"] }, { "_id": "Bob", "products": ["Pen"] }]
B. [{ "_id": "Alice", "products": "Pen" }, { "_id": "Bob", "products": "Pen" }]
C. [{ "_id": "Alice", "products": ["Notebook"] }, { "_id": "Bob", "products": ["Pen"] }]
D. [{ "_id": "Alice", "products": [] }, { "_id": "Bob", "products": [] }]

Solution

  1. Step 1: Group documents by customer

    The aggregation groups documents by the "customer" field, so Alice and Bob form separate groups.
  2. Step 2: Use $push to collect products

    For each group, $push collects all "product" values into an array. Alice has "Pen" and "Notebook", Bob has "Pen".
  3. Final Answer:

    [{ "_id": "Alice", "products": ["Pen", "Notebook"] }, { "_id": "Bob", "products": ["Pen"] }] -> Option A
  4. Quick Check:

    Group by customer + $push products = [{ "_id": "Alice", "products": ["Pen", "Notebook"] }, { "_id": "Bob", "products": ["Pen"] }] [OK]
Hint: Group by field, $push collects all matching values in array [OK]
Common Mistakes:
  • Expecting $push to return single value instead of array
  • Confusing $push with $first or $last accumulator
  • Ignoring grouping effect on output structure
4. You wrote this aggregation but it throws an error:
{ $group: { _id: "$category", items: { $push: "$item" } } }

What is the likely cause of the error?
medium
A. The field names "category" or "item" do not exist in the documents.
B. You forgot to include the $match stage before $group.
C. The $push operator cannot be used inside $group.
D. The _id field cannot be a string.

Solution

  1. Step 1: Check field existence in documents

    If the fields "category" or "item" do not exist in the documents, $push will fail because it tries to access missing fields.
  2. Step 2: Validate other options

    $push is valid inside $group, $match is optional, and _id can be a string. So these are not causes of error.
  3. Final Answer:

    The field names "category" or "item" do not exist in the documents. -> Option A
  4. Quick Check:

    Missing fields cause $push error [OK]
Hint: Verify fields exist before using $push on them [OK]
Common Mistakes:
  • Assuming $push requires $match stage
  • Thinking _id cannot be string
  • Believing $push is invalid inside $group
5. You want to group sales by store and collect all product names sold, but only unique products without duplicates. Which aggregation pipeline correctly uses $push and another operator to achieve this?
hard
A. { $group: { _id: "$store", products: { $push: "$product" } } }
B. { $group: { _id: "$store", products: { $push: { $each: "$product" } } } }
C. { $group: { _id: "$store", products: { $push: { $addToSet: "$product" } } } }
D. { $group: { _id: "$store", products: { $addToSet: "$product" } } }

Solution

  1. Step 1: Understand $push vs $addToSet

    $push collects all values including duplicates. $addToSet collects unique values only.
  2. Step 2: Identify correct usage for unique array

    To get unique products per store, use $addToSet: "$product" inside $group.
  3. Step 3: Analyze other options

    { $group: { _id: "$store", products: { $push: "$product" } } } uses $push (duplicates allowed). { $group: { _id: "$store", products: { $push: { $addToSet: "$product" } } } } nests $addToSet inside $push which is invalid. { $group: { _id: "$store", products: { $push: { $each: "$product" } } } } misuses $each inside $push.
  4. Final Answer:

    { $group: { _id: "$store", products: { $addToSet: "$product" } } } -> Option D
  5. Quick Check:

    Unique array needs $addToSet, not $push [OK]
Hint: Use $addToSet for unique arrays, $push allows duplicates [OK]
Common Mistakes:
  • Using $push when unique values are needed
  • Nesting $addToSet inside $push incorrectly
  • Misusing $each inside $push accumulator
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