Bird
Raised Fist0
MongoDBquery~10 mins

$push operator for adding to arrays in MongoDB - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to add a new tag 'urgent' to the tags array in the document.

MongoDB
db.tasks.updateOne({ _id: 1 }, { [1]: { tags: 'urgent' } })
Drag options to blanks, or click blank then click option'
A$addToSet
B$push
C$set
D$inc
Attempts:
3 left
💡 Hint
Common Mistakes
Using $set replaces the whole array instead of adding an element.
Using $inc is for numbers, not arrays.
2fill in blank
medium

Complete the code to add the number 5 to the scores array in all documents where the name is 'Alice'.

MongoDB
db.students.updateMany({ name: 'Alice' }, { [1]: { scores: 5 } })
Drag options to blanks, or click blank then click option'
A$set
B$inc
C$push
D$pull
Attempts:
3 left
💡 Hint
Common Mistakes
Using $set replaces the whole array.
Using $pull removes elements, not adds.
3fill in blank
hard

Fix the error in the code to correctly add 'completed' to the status array for the document with _id 10.

MongoDB
db.orders.updateOne({ _id: 10 }, { [1]: { status: 'completed' } })
Drag options to blanks, or click blank then click option'
A$set
B$pull
C$addToSet
D$push
Attempts:
3 left
💡 Hint
Common Mistakes
Using $set replaces the entire status field.
Using $pull removes elements instead of adding.
4fill in blank
hard

Fill both blanks to add multiple tags 'new' and 'sale' to the tags array in one update.

MongoDB
db.products.updateOne({ _id: 5 }, { [1]: { tags: { [2]: ['new', 'sale'] } } })
Drag options to blanks, or click blank then click option'
A$push
B$each
C$addToSet
D$set
Attempts:
3 left
💡 Hint
Common Mistakes
Using $set replaces the whole array.
Not using $each adds the array as a single element.
5fill in blank
hard

Fill both blanks to add the numbers 10, 20, and 30 to the scores array only if they are not already present.

MongoDB
db.players.updateOne({ name: 'Bob' }, { [1]: { scores: { [2]: [10, 20, 30] } } })
Drag options to blanks, or click blank then click option'
A$addToSet
B$push
C$each
D$set
Attempts:
3 left
💡 Hint
Common Mistakes
Using $push adds duplicates.
Not using $each adds the array as one element.

Practice

(1/5)
1. What does the $push operator do in MongoDB?
easy
A. Adds a new element to the end of an array field in a document
B. Removes an element from an array field in a document
C. Replaces the entire array field with a new array
D. Creates a new collection in the database

Solution

  1. Step 1: Understand the purpose of $push

    The $push operator is used to add elements to an existing array field inside a MongoDB document.
  2. Step 2: Compare with other options

    Options A, C, and D describe different operations: removing elements, replacing arrays, or creating collections, which are not what $push does.
  3. Final Answer:

    Adds a new element to the end of an array field in a document -> Option A
  4. Quick Check:

    $push adds elements [OK]
Hint: Remember: $push always adds to array end [OK]
Common Mistakes:
  • Confusing $push with $pull (which removes items)
  • Thinking $push replaces the whole array
  • Mixing $push with collection creation commands
2. Which of the following is the correct syntax to add the value 5 to the array field numbers in a document where _id is 1?
easy
A. db.collection.updateOne({_id: 1}, {$push: {numbers: 5}})
B. db.collection.updateOne({_id: 1}, {$push: numbers: 5})
C. db.collection.updateOne({_id: 1}, {$push: {numbers => 5}})
D. db.collection.updateOne({_id: 1}, {$push: {numbers: [5]}})

Solution

  1. Step 1: Identify correct $push syntax

    The correct syntax uses an object with the field name as key and the value to add as value: {$push: {field: value}}.
  2. Step 2: Analyze each option

    db.collection.updateOne({_id: 1}, {$push: {numbers: 5}}) matches the correct syntax. db.collection.updateOne({_id: 1}, {$push: numbers: 5}) misses curly braces around the field-value pair. db.collection.updateOne({_id: 1}, {$push: {numbers => 5}}) uses an invalid arrow syntax. db.collection.updateOne({_id: 1}, {$push: {numbers: [5]}}) pushes the array [5] as a single element instead of adding the scalar value 5.
  3. Final Answer:

    db.collection.updateOne({_id: 1}, {$push: {numbers: 5}}) -> Option A
  4. Quick Check:

    Correct $push syntax uses {$push: {field: value}} [OK]
Hint: Use {$push: {field: value}} with braces [OK]
Common Mistakes:
  • Omitting braces around field-value pair
  • Using wrong symbols like => instead of :
  • Pushing an array when a single value is intended
3. Given the document { _id: 1, tags: ["red", "blue"] }, what will be the tags array after running db.collection.updateOne({_id: 1}, {$push: {tags: "green"}})?
medium
A. ["red", "blue"]
B. ["red", "green", "blue"]
C. ["green", "red", "blue"]
D. ["red", "blue", "green"]

Solution

  1. Step 1: Understand $push effect on array

    The $push operator adds the new element to the end of the existing array.
  2. Step 2: Apply $push to the given array

    Starting with ["red", "blue"], pushing "green" adds it at the end, resulting in ["red", "blue", "green"].
  3. Final Answer:

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

    New item added at array end [OK]
Hint: Remember $push adds at the end of array [OK]
Common Mistakes:
  • Assuming $push adds at the start
  • Replacing the whole array instead of adding
  • Confusing order of elements after push
4. You want to add multiple values ["yellow", "purple"] to the colors array in a document with _id: 2. Which update command will NOT work correctly?
medium
A. db.collection.updateOne({_id: 2}, {$push: {colors: { $each: ["yellow", "purple"] }}})
B. db.collection.updateOne({_id: 2}, {$push: {colors: ["yellow", "purple"]}})
C. db.collection.updateOne({_id: 2}, {$push: {colors: {$each: ["yellow", "purple"]}}})
D. db.collection.updateOne({_id: 2}, {$push: {colors: { $each: ["yellow", "purple" ] }}})

Solution

  1. Step 1: Understand how to push multiple items

    To add multiple items to an array, $push must be combined with $each inside the update document.
  2. Step 2: Analyze each option

    Options B, C, and D correctly use $each to add multiple values. db.collection.updateOne({_id: 2}, {$push: {colors: ["yellow", "purple"]}}) tries to push an array directly, which will add the entire array as a single element, not multiple elements.
  3. Final Answer:

    db.collection.updateOne({_id: 2}, {$push: {colors: ["yellow", "purple"]}}) -> Option B
  4. Quick Check:

    Use $each to push multiple items [OK]
Hint: Use $each inside $push for multiple items [OK]
Common Mistakes:
  • Pushing an array directly instead of using $each
  • Forgetting curly braces around $each
  • Using wrong operators like $addToSet instead of $push
5. You have a document { _id: 3, tasks: ["task1"] }. You want to add "task2" and "task3" only if they are not already in the array. Which update command correctly achieves this?
hard
A. db.collection.updateOne({_id: 3}, {$push: {tasks: { $each: ["task2", "task3"] }}})
B. db.collection.updateOne({_id: 3}, {$push: {tasks: { $addToSet: ["task2", "task3"] }}})
C. db.collection.updateOne({_id: 3}, {$addToSet: {tasks: { $each: ["task2", "task3"] }}})
D. db.collection.updateOne({_id: 3}, {$push: {tasks: ["task2", "task3"]}})

Solution

  1. Step 1: Understand difference between $push and $addToSet

    $push adds items regardless of duplicates. $addToSet adds items only if they don't exist already.
  2. Step 2: Analyze the commands

    db.collection.updateOne({_id: 3}, {$addToSet: {tasks: { $each: ["task2", "task3"] }}}) uses $addToSet with $each to add multiple unique items. Options A and D use $push which can add duplicates. db.collection.updateOne({_id: 3}, {$push: {tasks: { $addToSet: ["task2", "task3"] }}}) incorrectly nests $addToSet inside $push, which is invalid syntax.
  3. Final Answer:

    db.collection.updateOne({_id: 3}, {$addToSet: {tasks: { $each: ["task2", "task3"] }}}) -> Option C
  4. Quick Check:

    Use $addToSet with $each for unique additions [OK]
Hint: Use $addToSet with $each to avoid duplicates [OK]
Common Mistakes:
  • Using $push when duplicates should be avoided
  • Nesting $addToSet inside $push incorrectly
  • Forgetting $each when adding multiple items