دوره‌ها / MongoDB / UPDATE (UPDATE)

UPDATE (UPDATE)

15 دقیقه Article

UPDATE: به‌روزرسانی داده 🔄

UPDATE عملیات Update در CRUD است. در MongoDB، از updateOne()، updateMany() و replaceOne() برای به‌روزرسانی documents استفاده می‌کنیم.

updateOne() - به‌روزرسانی یک Document:

// به‌روزرسانی با $set
db.users.updateOne(
  {{ name: "Ali" }},
  {{ $set: {{ age: 26, city: "Tehran" }} }}
)

// به‌روزرسانی با $inc (افزایش مقدار)
db.users.updateOne(
  {{ name: "Ali" }},
  {{ $inc: {{ age: 1 }} }}  // age را 1 افزایش می‌دهد
)

// به‌روزرسانی با $unset (حذف فیلد)
db.users.updateOne(
  {{ name: "Ali" }},
  {{ $unset: {{ city: "" }} }}
)

updateMany() - به‌روزرسانی چند Document:

// به‌روزرسانی همه users بالای 18 سال
db.users.updateMany(
  {{ age: {{ $gt: 18 }} }},
  {{ $set: {{ status: "active" }} }}
)

// افزایش قیمت همه محصولات
db.products.updateMany(
  {{}},
  {{ $mul: {{ price: 1.1 }} }}  // قیمت را 10% افزایش می‌دهد
)

Update Operators:

// $set - تنظیم مقدار
{{ $set: {{ field: "value" }} }}

// $unset - حذف فیلد
{{ $unset: {{ field: "" }} }}

// $inc - افزایش/کاهش عدد
{{ $inc: {{ count: 1 }} }}

// $mul - ضرب
{{ $mul: {{ price: 1.1 }} }}

// $min - مقدار کمتر
{{ $min: {{ score: 50 }} }}

// $max - مقدار بیشتر
{{ $max: {{ score: 100 }} }}

// $rename - تغییر نام فیلد
{{ $rename: {{ oldName: "newName" }} }}

// $currentDate - تنظیم تاریخ فعلی
{{ $currentDate: {{ lastModified: true }} }}

replaceOne() - جایگزینی کامل Document:

// جایگزینی کامل document (فقط _id حفظ می‌شود)
db.users.replaceOne(
  {{ name: "Ali" }},
  {{
    name: "Ali",
    email: "newemail@example.com",
    age: 27
    // تمام فیلدهای دیگر حذف می‌شوند!
  }}
)
💡 نکته: replaceOne() کل document را جایگزین می‌کند (به جز _id). اگر می‌خواهید فقط فیلدهای خاصی را تغییر دهید، از updateOne() با $set استفاده کنید.
✅ یاد گرفتید: با updateOne() و updateMany() می‌توانید documents را به‌روزرسانی کنید و از update operators برای عملیات مختلف استفاده کنید!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: UPDATE Easy
سوال تمرین

🎯 تمرین: Update Document

age یک user رو با updateOne به‌روزرسانی کنید.

پاسخ تمرین
JAVASCRIPT
db.users.updateOne(
    { name: "Ali" },
    { $set: { age: 26 } }
)

// یا updateMany
db.users.updateMany(
    { age: { $lt: 18 } },
    { $set: { status: "minor" } }
)

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.