Bird
Raised Fist0
MongoDBquery~10 mins

$addToSet accumulator for unique 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 $addToSet to add unique values to the array.

MongoDB
{ $group: { _id: "$category", items: { [1]: "$item" } } }
Drag options to blanks, or click blank then click option'
A$sum
B$push
C$addToSet
D$avg
Attempts:
3 left
💡 Hint
Common Mistakes
Using $push instead of $addToSet, which allows duplicates.
Using $sum or $avg which are for numeric calculations, not arrays.
2fill in blank
medium

Complete the aggregation stage to group by "type" and collect unique "tags" using $addToSet.

MongoDB
{ $group: { _id: "$type", uniqueTags: { [1]: "$tags" } } }
Drag options to blanks, or click blank then click option'
A$push
B$max
C$first
D$addToSet
Attempts:
3 left
💡 Hint
Common Mistakes
Using $push which does not remove duplicates.
Using $first or $max which return single values, not arrays.
3fill in blank
hard

Fix the error in the aggregation pipeline to correctly use $addToSet for unique "colors".

MongoDB
{ $group: { _id: "$brand", colors: { [1]: "$colors" } } }
Drag options to blanks, or click blank then click option'
A$addToSet
B$avg
C$sum
D$push
Attempts:
3 left
💡 Hint
Common Mistakes
Using $push instead of $addToSet.
Using numeric accumulators like $sum or $avg for arrays.
4fill in blank
hard

Fill both blanks to group by "department" and collect unique "employees" using $addToSet.

MongoDB
{ $group: { _id: "$department", [1]: { [2]: "$employee" } } }
Drag options to blanks, or click blank then click option'
Astaff
B$push
C$addToSet
Dmembers
Attempts:
3 left
💡 Hint
Common Mistakes
Using $push instead of $addToSet.
Using field names like "members" without matching the code.
5fill in blank
hard

Fill both blanks to group by "category", collect unique "products" with $addToSet, and name the array "uniqueProducts".

MongoDB
{ $group: { _id: "$category", [1]: { [2]: "$product" } } }
Drag options to blanks, or click blank then click option'
AuniqueProducts
B$addToSet
C$push
Ditems
Attempts:
3 left
💡 Hint
Common Mistakes
Using $push which allows duplicates.
Confusing field names or accumulator names.

Practice

(1/5)
1. What does the $addToSet accumulator do in a MongoDB aggregation pipeline?
easy
A. Counts the total number of documents in a group
B. Adds all values including duplicates into an array
C. Sorts the array elements in ascending order
D. Collects unique values into an array, avoiding duplicates

Solution

  1. Step 1: Understand $addToSet purpose

    $addToSet collects values but only keeps unique ones, no duplicates.
  2. Step 2: Compare with other accumulators

    Unlike $push which adds all values, $addToSet ensures uniqueness.
  3. Final Answer:

    Collects unique values into an array, avoiding duplicates -> Option D
  4. Quick Check:

    $addToSet = unique array [OK]
Hint: Remember: $addToSet means add unique only [OK]
Common Mistakes:
  • Confusing $addToSet with $push
  • Thinking it sorts the array
  • Assuming it counts documents
2. Which of the following is the correct syntax to use $addToSet in a MongoDB aggregation $group stage?
easy
A. { $group: { _id: "$category", uniqueItems: { $addToSet: "$item" } } }
B. { $group: { _id: "$category", uniqueItems: { $push: "$item" } } }
C. { $group: { _id: "$category", uniqueItems: { $addToSet: ["$item"] } } }
D. { $group: { _id: "$category", uniqueItems: { $addToSet: { $item } } } }

Solution

  1. Step 1: Identify correct $addToSet usage

    The correct syntax uses $addToSet with a field path as a string, like "$item".
  2. Step 2: Check other options for errors

    { $group: { _id: "$category", uniqueItems: { $push: "$item" } } } uses $push, not $addToSet. { $group: { _id: "$category", uniqueItems: { $addToSet: ["$item"] } } } wrongly wraps field in array. { $group: { _id: "$category", uniqueItems: { $addToSet: { $item } } } } uses braces incorrectly.
  3. Final Answer:

    { $group: { _id: "$category", uniqueItems: { $addToSet: "$item" } } } -> Option A
  4. Quick Check:

    Correct syntax = { $group: { _id: "$category", uniqueItems: { $addToSet: "$item" } } } [OK]
Hint: Use field path as string inside $addToSet [OK]
Common Mistakes:
  • Wrapping field in array inside $addToSet
  • Using $push instead of $addToSet
  • Using braces {} incorrectly around field
3. Given the collection documents:
{ "category": "fruit", "item": "apple" }
{ "category": "fruit", "item": "banana" }
{ "category": "fruit", "item": "apple" }

What will be the result of this aggregation?
[{ $group: { _id: "$category", uniqueItems: { $addToSet: "$item" } } }]
medium
A. { "_id": "fruit", "uniqueItems": ["apple", "banana"] }
B. { "_id": "fruit", "uniqueItems": ["apple", "apple", "banana"] }
C. { "_id": "fruit", "uniqueItems": ["banana"] }
D. { "_id": "fruit", "uniqueItems": [] }

Solution

  1. Step 1: Group by category and collect unique items

    All documents have category "fruit". $addToSet collects unique "item" values.
  2. Step 2: Identify unique items

    Items are "apple", "banana", and another "apple" (duplicate). Unique set is ["apple", "banana"].
  3. Final Answer:

    { "_id": "fruit", "uniqueItems": ["apple", "banana"] } -> Option A
  4. Quick Check:

    Unique items = ["apple", "banana"] [OK]
Hint: Duplicates removed, only unique values remain [OK]
Common Mistakes:
  • Expecting duplicates in result array
  • Confusing $addToSet with $push
  • Ignoring grouping key
4. You wrote this aggregation but it throws an error:
[{ $group: { _id: "$category", uniqueItems: { $addToSet: item } } }]

What is the error and how to fix it?
medium
A. Wrong accumulator; use $push instead of $addToSet
B. Missing quotes around field path; fix by using "$item"
C. Missing $unwind stage before $group
D. Cannot use $addToSet inside $group

Solution

  1. Step 1: Identify syntax error in field reference

    Field paths must be strings with "$" prefix inside accumulators. Here, item is missing quotes and $.
  2. Step 2: Correct the syntax

    Change item to "$item" to fix the error.
  3. Final Answer:

    Missing quotes around field path; fix by using "$item" -> Option B
  4. Quick Check:

    Field path needs "$" and quotes [OK]
Hint: Always quote field paths with $ inside accumulators [OK]
Common Mistakes:
  • Forgetting $ before field name
  • Not quoting field path as string
  • Assuming $unwind is always required
5. You have documents with a field tags as arrays, some with duplicates:
{ "_id": 1, "tags": ["red", "blue", "red"] }
{ "_id": 2, "tags": ["blue", "green"] }

Which aggregation pipeline will produce a single array of all unique tags across documents?
hard
A. [{ $project: { uniqueTags: { $addToSet: "$tags" } } }]
B. [{ $group: { _id: null, allTags: { $addToSet: "$tags" } } }]
C. [{ $unwind: "$tags" }, { $group: { _id: null, allTags: { $addToSet: "$tags" } } }]
D. [{ $unwind: "$tags" }, { $group: { _id: "$tags", count: { $sum: 1 } } }]

Solution

  1. Step 1: Use $unwind to flatten tags arrays

    $unwind breaks each array element into separate documents, allowing unique collection.
  2. Step 2: Group all tags into a unique set

    Grouping by null collects all tags into one array with $addToSet ensuring uniqueness.
  3. Final Answer:

    [{ $unwind: "$tags" }, { $group: { _id: null, allTags: { $addToSet: "$tags" } } }] -> Option C
  4. Quick Check:

    Unwind then addToSet = unique combined array [OK]
Hint: Unwind arrays before addToSet to get unique elements [OK]
Common Mistakes:
  • Trying to addToSet whole arrays without unwind
  • Using $project instead of $group for aggregation
  • Grouping by tags instead of null for combined result
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