Bird
Raised Fist0
MongoDBquery~5 mins

$addToSet for unique array additions in MongoDB - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the $addToSet operator do in MongoDB?

$addToSet adds a value to an array only if the value is not already present, ensuring unique elements.

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

$push adds values to an array regardless of duplicates, while $addToSet adds only if the value is not already in the array.

Click to reveal answer
beginner
Write a MongoDB update query snippet to add the value "apple" uniquely to the fruits array.
{ $addToSet: { fruits: "apple" } }
Click to reveal answer
intermediate
Can $addToSet add multiple unique values at once? If yes, how?

Yes, by using $each inside $addToSet to add multiple unique values.

{ $addToSet: { fruits: { $each: ["apple", "banana"] } } }
Click to reveal answer
intermediate
What happens if you use $addToSet on a field that is not an array?

If the field does not exist, MongoDB creates an array with the value. If the field exists and holds a non-array value, the update operation fails and MongoDB returns an error.

Click to reveal answer
What does $addToSet ensure when adding elements to an array?
ANo duplicate elements are added
BElements are always added at the start
CElements are removed if they exist
DArray is replaced completely
Which operator would add duplicates to an array in MongoDB?
A$push
B$addToSet
C$set
D$unset
How do you add multiple unique values to an array using $addToSet?
AUse <code>$push</code> with an array
BUse multiple <code>$addToSet</code> operators
CUse <code>$each</code> inside <code>$addToSet</code>
DUse <code>$set</code> with an array
If the target field does not exist, what does $addToSet do?
AThrows an error
BCreates the field as a string
CIgnores the update
DCreates the field as an array with the value
Which of these is a valid use of $addToSet?
A{ $addToSet: { tags: "mongodb" } }
B{ $addToSet: { tags: { $each: ["mongodb", "database"] } } }
C{ $addToSet: { tags: { $each: "mongodb" } } }
D{ $addToSet: { tags: ["mongodb", "database"] } }
Explain how $addToSet helps maintain unique elements in a MongoDB array.
Think about how sets work in real life, like a collection of unique stickers.
You got /4 concepts.
    Describe the difference between $addToSet and $push when updating arrays in MongoDB.
    Imagine adding items to a shopping list with or without checking if they are already there.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the $addToSet operator in MongoDB?
      easy
      A. To sort the elements of an array
      B. To remove duplicate values from an array
      C. To replace an entire array with a new value
      D. To add a value to an array only if it does not already exist

      Solution

      1. Step 1: Understand the purpose of $addToSet

        $addToSet adds a value to an array only if that value is not already present, ensuring uniqueness.
      2. Step 2: Compare with other array operations

        Unlike operators that remove duplicates or replace arrays, $addToSet only adds unique values without duplicates.
      3. Final Answer:

        To add a value to an array only if it does not already exist -> Option D
      4. Quick Check:

        $addToSet ensures unique additions [OK]
      Hint: Remember: $addToSet adds only new unique values [OK]
      Common Mistakes:
      • Confusing $addToSet with $push which adds duplicates
      • Thinking $addToSet removes duplicates from existing array
      • Assuming $addToSet sorts the array
      2. Which of the following is the correct syntax to add multiple unique values to an array field tags using $addToSet?
      easy
      A. { $addToSet: { tags: { $each: ["mongodb", "database"] } } }
      B. { $addToSet: { tags: ["mongodb", "database"] } }
      C. { $addToSet: { tags: { $push: ["mongodb", "database"] } } }
      D. { $push: { tags: { $each: ["mongodb", "database"] } } }

      Solution

      1. Step 1: Recall syntax for adding multiple unique values

        To add multiple unique values with $addToSet, use $each inside it.
      2. Step 2: Analyze options

        { $addToSet: { tags: { $each: ["mongodb", "database"] } } } correctly uses $addToSet with $each to add multiple unique values. { $addToSet: { tags: ["mongodb", "database"] } } lacks $each, so it tries to add an array as a single element. Using $push inside or instead of $addToSet is incorrect as it doesn't ensure uniqueness.
      3. Final Answer:

        { $addToSet: { tags: { $each: ["mongodb", "database"] } } } -> Option A
      4. Quick Check:

        Use $addToSet with $each for multiple unique additions [OK]
      Hint: Use $each inside $addToSet to add multiple unique items [OK]
      Common Mistakes:
      • Omitting $each when adding multiple values
      • Using $push instead of $addToSet for uniqueness
      • Adding an array as a single element instead of multiple
      3. Given the document { _id: 1, colors: ["red", "blue"] }, what will be the colors array after running this update?
      { $addToSet: { colors: "blue" } }
      medium
      A. ["red", "blue", "blue"]
      B. ["red", "blue"]
      C. ["blue"]
      D. ["red"]

      Solution

      1. Step 1: Understand $addToSet behavior with existing value

        The value "blue" already exists in the array, so $addToSet will not add it again.
      2. Step 2: Determine the resulting array

        Since "blue" is present, the array remains unchanged as ["red", "blue"].
      3. Final Answer:

        ["red", "blue"] -> Option B
      4. Quick Check:

        Existing values are not duplicated by $addToSet [OK]
      Hint: If value exists, $addToSet does not add it again [OK]
      Common Mistakes:
      • Assuming $addToSet always appends the value
      • Confusing $addToSet with $push which allows duplicates
      • Thinking the array will be replaced
      4. You want to add multiple unique tags to a document's tags array, but your update query:
      { $addToSet: { tags: ["nodejs", "mongodb"] } }
      adds the entire array as one element instead of separate tags. What is the fix?
      medium
      A. Use $addToSet: { tags: { $each: ["nodejs", "mongodb"] } }
      B. Use $push: { tags: ["nodejs", "mongodb"] }
      C. Use $addToSet: { tags: "nodejs", "mongodb" }
      D. Use $addToSet: { tags: { $push: ["nodejs", "mongodb"] } }

      Solution

      1. Step 1: Identify the problem with adding an array directly

        Adding an array directly with $addToSet adds it as a single element, not multiple elements.
      2. Step 2: Use $each to add multiple unique elements

        Wrapping the array with $each inside $addToSet adds each element uniquely.
      3. Final Answer:

        Use $addToSet: { tags: { $each: ["nodejs", "mongodb"] } } -> Option A
      4. Quick Check:

        Use $each inside $addToSet for multiple unique additions [OK]
      Hint: Wrap multiple values with $each inside $addToSet [OK]
      Common Mistakes:
      • Adding array directly without $each
      • Using $push instead of $addToSet for uniqueness
      • Incorrect syntax with multiple keys inside $addToSet
      5. You have a MongoDB document:
      { _id: 1, items: ["apple", "banana"] }
      You want to add the items ["banana", "cherry", "apple", "date"] uniquely to the items array. Which update query will correctly add only the new unique items?
      hard
      A. { $addToSet: { items: ["banana", "cherry", "apple", "date"] } }
      B. { $set: { items: ["banana", "cherry", "apple", "date"] } }
      C. { $addToSet: { items: { $each: ["banana", "cherry", "apple", "date"] } } }
      D. { $push: { items: { $each: ["banana", "cherry", "apple", "date"] } } }

      Solution

      1. Step 1: Understand the goal to add only new unique items

        We want to add only items not already in the array, so duplicates like "banana" and "apple" should not be added again.
      2. Step 2: Choose the correct operator and syntax

        Using $addToSet with $each adds multiple unique items. { $addToSet: { items: { $each: ["banana", "cherry", "apple", "date"] } } } correctly uses this syntax. { $addToSet: { items: ["banana", "cherry", "apple", "date"] } } adds the entire array as one element. { $push: { items: { $each: ["banana", "cherry", "apple", "date"] } } } uses $push which allows duplicates. { $set: { items: ["banana", "cherry", "apple", "date"] } } replaces the entire array, losing existing items.
      3. Final Answer:

        { $addToSet: { items: { $each: ["banana", "cherry", "apple", "date"] } } } -> Option C
      4. Quick Check:

        $addToSet with $each adds only new unique items [OK]
      Hint: Use $addToSet with $each to add multiple unique items without duplicates [OK]
      Common Mistakes:
      • Adding array directly without $each causing one element addition
      • Using $push which allows duplicates
      • Replacing array with $set losing existing data