Bird
Raised Fist0
MongoDBquery~5 mins

$each modifier with $push in MongoDB

Choose your learning style10 modes available
Introduction

The $each modifier lets you add multiple items to an array in one step. It works with $push to make adding many values easy and fast.

You want to add several new tags to a blog post's tags array at once.
You need to add multiple new friends to a user's friends list in one update.
You want to add several new scores to a player's score history in a game.
You are updating a product's list of available colors with many new options.
Syntax
MongoDB
db.collection.updateOne(
  { <filter> },
  { $push: { <arrayField>: { $each: [ <value1>, <value2>, ... ] } } }
)

The $each modifier must be inside $push.

You can add many values to the array in one update.

Examples
Adds "reading" and "hiking" to Alice's hobbies array.
MongoDB
db.users.updateOne(
  { name: "Alice" },
  { $push: { hobbies: { $each: ["reading", "hiking"] } } }
)
Adds three colors to the product's colors array.
MongoDB
db.products.updateOne(
  { sku: "123" },
  { $push: { colors: { $each: ["red", "blue", "green"] } } }
)
Sample Program

This example starts with a player named Bob who has scores 10 and 20. Then it adds three new scores (30, 40, 50) to his scores array using $each with $push. Finally, it shows the updated document.

MongoDB
use testdb

// Insert a sample document
db.players.insertOne({ name: "Bob", scores: [10, 20] })

// Add multiple scores at once
db.players.updateOne(
  { name: "Bob" },
  { $push: { scores: { $each: [30, 40, 50] } } }
)

// Find and show the updated document
printjson(db.players.findOne({ name: "Bob" }))
OutputSuccess
Important Notes

If the array field does not exist, $push with $each will create it.

You can combine $each with other modifiers like $sort or $slice to control the array after pushing.

Summary

$each lets you add many items to an array at once.

It must be used inside $push.

This makes updates simpler and faster when adding multiple values.

Practice

(1/5)
1. What does the $each modifier do when used with $push in MongoDB?
easy
A. It sorts the array elements after pushing a new value.
B. It adds multiple values to an array in a single update operation.
C. It replaces the entire array with a new set of values.
D. It removes multiple values from an array.

Solution

  1. Step 1: Understand $push usage

    $push adds elements to an array field in a document.
  2. Step 2: Role of $each modifier

    $each allows adding multiple elements at once inside $push, making the update efficient.
  3. Final Answer:

    It adds multiple values to an array in a single update operation. -> Option B
  4. Quick Check:

    $each adds many items [OK]
Hint: Remember: $each adds many items inside $push [OK]
Common Mistakes:
  • Thinking $each removes items
  • Using $each outside $push
  • Confusing $each with sorting
2. Which of the following is the correct syntax to add multiple values ["a", "b", "c"] to the array field tags using $push with $each?
easy
A. { $push: { tags: { $each: ["a", "b", "c"] } } }
B. { $push: { tags: ["a", "b", "c"] } }
C. { $push: { tags: { $add: ["a", "b", "c"] } } }
D. { $push: { tags: { $each: "a", "b", "c" } } }

Solution

  1. Step 1: Check correct $push syntax

    $push requires a field and a value or modifier object.
  2. Step 2: Validate $each usage

    $each must be an array inside $push to add multiple items.
  3. Final Answer:

    { $push: { tags: { $each: ["a", "b", "c"] } } } -> Option A
  4. Quick Check:

    Correct $each syntax = { $push: { tags: { $each: ["a", "b", "c"] } } } [OK]
Hint: Use $each with an array inside $push [OK]
Common Mistakes:
  • Passing array directly without $each
  • Using invalid operator like $add
  • Incorrect $each format without array brackets
3. Given the document { _id: 1, colors: ["red"] }, what will be the colors array after running this update?
{ $push: { colors: { $each: ["blue", "green"] } } }
medium
A. ["red", ["blue", "green"]]
B. ["blue", "green"]
C. ["red", "blue", "green"]
D. ["red"]

Solution

  1. Step 1: Initial array and update operation

    Original array is ["red"]. The update uses $push with $each to add "blue" and "green".
  2. Step 2: Effect of $each inside $push

    $each adds each element individually, so "blue" and "green" are appended to the array.
  3. Final Answer:

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

    Array after update = ["red", "blue", "green"] [OK]
Hint: $each adds items individually, not as a nested array [OK]
Common Mistakes:
  • Expecting nested array inside colors
  • Replacing array instead of pushing
  • Ignoring original array elements
4. What is wrong with this update operation?
{ $push: { items: { $each: "apple", "banana" } } }
medium
A. The $each value must be an array, not separate strings.
B. The $push operator cannot be used with $each.
C. The field name items is invalid.
D. The update syntax is correct and will work as expected.

Solution

  1. Step 1: Analyze $each value type

    $each requires an array of values, but here it is given as separate strings without array brackets.
  2. Step 2: Identify syntax error

    Passing multiple strings without array brackets causes a syntax error in MongoDB update.
  3. Final Answer:

    The $each value must be an array, not separate strings. -> Option A
  4. Quick Check:

    $each needs array brackets [OK]
Hint: Always wrap $each values in square brackets [OK]
Common Mistakes:
  • Passing multiple values without array brackets
  • Confusing $each with $addToSet
  • Assuming $push alone can add multiple items
5. You want to add multiple new tags ["urgent", "review", "backend"] to the tags array of a document, but only if they are not already present. Which update operation correctly uses $push with $each and ensures no duplicates?
hard
A. { $push: { tags: { $each: ["urgent", "review", "backend"] } } }
B. { $addToSet: { tags: ["urgent", "review", "backend"] } }
C. { $push: { tags: ["urgent", "review", "backend"] } }
D. { $addToSet: { tags: { $each: ["urgent", "review", "backend"] } } }

Solution

  1. Step 1: Understand requirement to avoid duplicates

    $push adds items regardless of duplicates, so it doesn't fit the requirement.
  2. Step 2: Use $addToSet with $each

    $addToSet adds unique values only, and supports $each to add multiple items without duplicates.
  3. Final Answer:

    { $addToSet: { tags: { $each: ["urgent", "review", "backend"] } } } -> Option D
  4. Quick Check:

    $addToSet + $each avoids duplicates [OK]
Hint: Use $addToSet with $each to add unique items [OK]
Common Mistakes:
  • Using $push which allows duplicates
  • Not using $each with $addToSet
  • Passing array directly without $each
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