Bird
Raised Fist0
MongoDBquery~5 mins

$addToSet accumulator for unique arrays in MongoDB - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the $addToSet accumulator do in MongoDB aggregation?

$addToSet adds unique values to an array during aggregation. It prevents duplicates, so each value appears only once.

Click to reveal answer
beginner
How is $addToSet different from $push in MongoDB?

$push adds all values to an array, including duplicates. $addToSet adds only unique values, skipping duplicates.

Click to reveal answer
intermediate
Write a simple example of $addToSet usage in an aggregation pipeline.
{ $group: { _id: "$category", uniqueItems: { $addToSet: "$item" } } }

This groups documents by category and collects unique items in each group.

Click to reveal answer
intermediate
Can $addToSet be used to accumulate unique objects in an array?

Yes, $addToSet can accumulate unique objects. Uniqueness is based on the whole object content, not just a field.

Click to reveal answer
advanced
What happens if you use $addToSet on a field that contains arrays?

$addToSet treats the entire array as one value. It adds the array only if it is unique compared to others.

Click to reveal answer
What is the main purpose of $addToSet in MongoDB aggregation?
ATo add unique values to an array
BTo sum numeric values
CTo count documents
DTo sort documents
Which accumulator allows duplicates in the array?
A$avg
B$addToSet
C$sum
D$push
If you want to group documents by a field and collect unique values of another field, which accumulator do you use?
A$addToSet
B$sum
C$max
D$min
What will $addToSet do if the same object appears multiple times?
AAdd all copies
BAdd only one copy
CIgnore all copies
DThrow an error
Can $addToSet be used to accumulate unique arrays inside an array?
ANo, it flattens arrays automatically
BNo, it only works with numbers
CYes, it treats each array as a unique value
DYes, but only with strings
Explain how $addToSet helps in creating arrays without duplicates in MongoDB aggregation.
Think about collecting unique items when grouping data.
You got /3 concepts.
    Describe the difference between $addToSet and $push accumulators.
    One keeps duplicates, the other does not.
    You got /3 concepts.

      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