0
0
MongodbHow-ToBeginner · 3 min read

How to Use $set in MongoDB: Update Documents Easily

In MongoDB, the $set operator updates the value of a field in a document without replacing the whole document. Use $set inside an updateOne or updateMany command to change or add fields safely.
📐

Syntax

The $set operator is used inside an update command to specify the fields and their new values. It updates only the fields you list, leaving others unchanged.

  • filter: Selects which documents to update.
  • update: Contains $set with fields and new values.
mongodb
db.collection.updateOne(
  { <filter> },
  { $set: { <field1>: <value1>, <field2>: <value2>, ... } }
)
💻

Example

This example updates the "age" field of the user with name "Alice" to 30. It shows how $set changes only the specified field.

mongodb
db.users.updateOne(
  { name: "Alice" },
  { $set: { age: 30 } }
)

// To verify the update:
db.users.find({ name: "Alice" })
Output
{ "_id" : ObjectId("..."), "name" : "Alice", "age" : 30, "city" : "New York" }
⚠️

Common Pitfalls

One common mistake is using $set without the update operator, which replaces the whole document instead of updating fields. Another is forgetting to include a filter, which can update multiple documents unintentionally.

Wrong way (replaces entire document):

mongodb
db.users.updateOne(
  { name: "Alice" },
  { age: 30 }
)

// This replaces the whole document with { age: 30 } and removes other fields.
📊

Quick Reference

OperatorPurposeExample Usage
$setUpdate or add fields in a document{ $set: { age: 30 } }
updateOneUpdate a single documentdb.collection.updateOne(filter, update)
updateManyUpdate multiple documentsdb.collection.updateMany(filter, update)

Key Takeaways

Use $set inside update commands to change specific fields without replacing the whole document.
Always include a filter to target the correct documents when updating.
Without $set, the update command replaces the entire document, which can cause data loss.
You can update one or many documents using updateOne or updateMany with $set.
Verify updates by querying the documents after the update operation.