Bird
Raised Fist0
MongoDBquery~5 mins

$set operator for setting fields 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 $set operator do in MongoDB?
The $set operator updates the value of a field in a document. If the field does not exist, it adds the field with the specified value.
Click to reveal answer
beginner
How do you use $set to change the value of a field named status to active?
You use { $set: { status: 'active' } } inside an update command to set the status field to active.
Click to reveal answer
beginner
Can $set add new fields to a document if they don't exist?
Yes, $set adds the field with the given value if the field is not already in the document.
Click to reveal answer
beginner
What happens if you use $set on a field that already has a value?
The existing value of the field is replaced with the new value provided in the $set operation.
Click to reveal answer
intermediate
Write a MongoDB update command using $set to change the age field to 30 for documents where name is 'Alice'.
db.collection.updateMany({ name: 'Alice' }, { $set: { age: 30 } })
Click to reveal answer
What does the $set operator do in MongoDB?
AIncrements a numeric field by 1
BDeletes a field from a document
CUpdates or adds a field with a specified value
DReplaces the entire document
If you want to add a new field city with value Paris to a document, which operator do you use?
A$set
B$unset
C$push
D$inc
What happens if $set is used on a field that already exists?
AThe operation fails
BThe field is removed
CThe field value is incremented
DThe field value is replaced
Which of these is a correct use of $set to update a field score to 100?
A{ $push: { score: 100 } }
B{ $set: { score: 100 } }
C{ $unset: { score: 100 } }
D{ $inc: { score: 100 } }
Which MongoDB command updates all documents with status 'pending' to have status 'complete'?
Adb.collection.updateMany({ status: 'pending' }, { $set: { status: 'complete' } })
Bdb.collection.updateMany({ status: 'pending' }, { $unset: { status: 'complete' } })
Cdb.collection.updateMany({ status: 'complete' }, { $set: { status: 'pending' } })
Ddb.collection.updateMany({ status: 'pending' }, { $inc: { status: 1 } })
Explain how the $set operator works in MongoDB updates.
Think about changing or adding information in a document.
You got /4 concepts.
    Describe a real-life example where you would use $set in a MongoDB database.
    Imagine changing details in a contact list or order system.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the $set operator do in MongoDB?
      easy
      A. It updates the value of specified fields or adds them if they don't exist.
      B. It deletes specified fields from a document.
      C. It replaces the entire document with a new one.
      D. It creates a new collection in the database.

      Solution

      1. Step 1: Understand the purpose of $set

        The $set operator is used to update existing fields or add new fields in a MongoDB document without affecting other fields.
      2. Step 2: Compare with other operations

        Deleting fields uses $unset, replacing documents uses replaceOne, and creating collections is unrelated to $set.
      3. Final Answer:

        It updates the value of specified fields or adds them if they don't exist. -> Option A
      4. Quick Check:

        $set updates or adds fields [OK]
      Hint: Remember: $set changes or adds fields only [OK]
      Common Mistakes:
      • Confusing $set with $unset which deletes fields
      • Thinking $set replaces the whole document
      • Assuming $set creates collections
      2. Which of the following is the correct syntax to set the field age to 30 in a document using $set?
      easy
      A. db.collection.updateOne({name: 'John'}, {$set: [age: 30]})
      B. db.collection.updateOne({name: 'John'}, {$set: {age: 30}})
      C. db.collection.updateOne({name: 'John'}, {$set: 'age': 30})
      D. db.collection.updateOne({name: 'John'}, {$set: age = 30})

      Solution

      1. Step 1: Identify correct $set syntax

        The $set operator requires an object with field-value pairs inside curly braces: {$set: {field: value}}.
      2. Step 2: Check each option

        db.collection.updateOne({name: 'John'}, {$set: {age: 30}}) uses correct syntax with {age: 30}. Options A, B, and C use invalid JavaScript or MongoDB syntax.
      3. Final Answer:

        db.collection.updateOne({name: 'John'}, {$set: {age: 30}}) -> Option B
      4. Quick Check:

        Correct $set syntax uses object with field-value pairs [OK]
      Hint: Use {$set: {field: value}} with curly braces [OK]
      Common Mistakes:
      • Using assignment (=) inside $set
      • Using quotes incorrectly around field names
      • Using array brackets instead of object braces
      3. Given the document { name: 'Alice', city: 'Paris' }, what will be the document after running db.users.updateOne({name: 'Alice'}, {$set: {city: 'London', age: 25}})?
      medium
      A. { city: 'London', age: 25 }
      B. { name: 'Alice', city: 'Paris', age: 25 }
      C. { name: 'Alice', city: 'London', age: 25 }
      D. { name: 'Alice', city: 'London' }

      Solution

      1. Step 1: Understand $set effect on fields

        The $set operator updates existing fields and adds new fields without removing others.
      2. Step 2: Apply update to the document

        Field city changes from 'Paris' to 'London', and new field age with value 25 is added. The name field remains unchanged.
      3. Final Answer:

        { name: 'Alice', city: 'London', age: 25 } -> Option C
      4. Quick Check:

        $set updates and adds fields, keeps others [OK]
      Hint: Only fields in $set change; others stay same [OK]
      Common Mistakes:
      • Assuming $set removes fields not listed
      • Thinking $set only adds but does not update
      • Confusing updateOne with replaceOne
      4. You run this update: db.products.updateOne({id: 101}, {$set: {price: 20, stock}}). What is the problem?
      medium
      A. Missing value for the field 'stock' inside $set causes a syntax error.
      B. The query filter {id: 101} is invalid.
      C. You cannot update multiple fields with $set.
      D. The update will delete the document.

      Solution

      1. Step 1: Analyze the $set object

        The $set operator requires each field to have a value. Here, stock is listed without a value, which is invalid syntax.
      2. Step 2: Check other parts of the update

        The filter {id: 101} is valid, and $set can update multiple fields. The update does not delete documents.
      3. Final Answer:

        Missing value for the field 'stock' inside $set causes a syntax error. -> Option A
      4. Quick Check:

        Each field in $set must have a value [OK]
      Hint: Every field in $set needs a value [OK]
      Common Mistakes:
      • Leaving out values for fields in $set
      • Confusing filter syntax with update syntax
      • Thinking $set deletes documents
      5. You want to update all documents in the employees collection to add a new field status with value 'active' only if the field status does not already exist. Which update command using $set is correct?
      hard
      A. db.employees.updateMany({}, {$set: {status: 'active'}})
      B. db.employees.updateMany({status: {$ne: 'active'}}, {$set: {status: 'active'}})
      C. db.employees.updateMany({status: null}, {$set: {status: 'active'}})
      D. db.employees.updateMany({status: {$exists: false}}, {$set: {status: 'active'}})

      Solution

      1. Step 1: Identify condition to update only missing 'status'

        The filter {status: {$exists: false}} selects documents where the 'status' field does not exist.
      2. Step 2: Use $set to add 'status' field

        The update {$set: {status: 'active'}} adds the 'status' field with value 'active' only to those documents.
      3. Step 3: Check other options

        db.employees.updateMany({}, {$set: {status: 'active'}}) updates all documents regardless of existing 'status'. db.employees.updateMany({status: null}, {$set: {status: 'active'}}) only matches documents with 'status' equal to null, not missing. db.employees.updateMany({status: {$ne: 'active'}}, {$set: {status: 'active'}}) updates documents where 'status' is not 'active', which may overwrite existing values.
      4. Final Answer:

        db.employees.updateMany({status: {$exists: false}}, {$set: {status: 'active'}}) -> Option D
      5. Quick Check:

        Use {$exists: false} to target missing fields [OK]
      Hint: Filter with {$exists: false} to add missing fields only [OK]
      Common Mistakes:
      • Updating all documents without filter
      • Using null instead of $exists for missing fields
      • Overwriting existing 'status' values unintentionally