MongoDB

MongoDB — به روزرسانی (Update)

آخرین بروزرسانی: 1404/08/20

به روزرسانی (Update)

اینجا «به روزرسانی (Update)» در MongoDB با «مونگوش (mongosh)» را تمرین می کنیم. «آپدیت (Update)» یعنی تغییر دادن فیلدهای سندهای موجود با کوئری هدفمند.

مقدمه سریع آپدیت

برای تغییر سندها، از updateOne() یا updateMany() استفاده کن. پارامتر اول «کوئری (Query)» است. پارامتر دوم «داده جدید» با عملگرهایی مثل $set و $inc است.

updateOne(): تغییر اولین تطابق

اول با یک جستجو مطمئن شو سند درست را می بینی.

db.posts.find({ title: "Post Title 1" })

مشاهده در ادیتور

حالا با $set فیلد likes را به روزرسانی کن.

db.posts.updateOne({ title: "Post Title 1" }, { $set: { likes: 2 } })

مشاهده در ادیتور

دوباره وضعیت را چک کن تا تغییر را ببینی.

db.posts.find({ title: "Post Title 1" })

مشاهده در ادیتور

آپدیت یا درج خودکار با upsert

اگر سند پیدا نشد، با گزینه upsert: true آن را بساز.

db.posts.updateOne(
  { title: "Post Title 5" },
  {
    $set: {
      title: "Post Title 5",
      body: "Body of post.",
      category: "Event",
      likes: 5,
      tags: ["news", "events"],
      date: Date()
    }
  },
  { upsert: true }
)

مشاهده در ادیتور

updateMany(): تغییر گروهی اسناد

برای تغییر همه تطابق ها از updateMany() استفاده کن. با $inc می توانی مقدار را زیاد کنی.

db.posts.updateMany({}, { $inc: { likes: 1 } })

مشاهده در ادیتور

نکته: همیشه قبل و بعد از آپدیت، با find() نتیجه را بررسی کن.

گام های عملی

  1. با جستجو (Find) سند هدف را پیدا کن.
  2. با updateOne() یا updateMany() مقدارها را تغییر بده.
  3. در صورت نیاز، از upsert برای ساخت خودکار استفاده کن.

ادامه مسیر آپدیت

برای جمع آوری موضوعی، صفحه API کوئری MongoDB را ببین. سپس برای پاک سازی، بخش حذف (Delete) را دنبال کن.

جمع بندی سریع

  • updateOne() فقط اولین سند را تغییر می دهد.
  • updateMany() همه تطابق ها را تغییر می دهد.
  • $set مقدار فیلد را جایگزین می کند.
  • $inc مقدار عددی را افزایش می دهد.
  • upsert نبود را بساز، بود را تغییر بده.