به روزرسانی (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() نتیجه را بررسی کن.
گام های عملی
- با جستجو (Find) سند هدف را پیدا کن.
- با
updateOne()یاupdateMany()مقدارها را تغییر بده. - در صورت نیاز، از
upsertبرای ساخت خودکار استفاده کن.
ادامه مسیر آپدیت
برای جمع آوری موضوعی، صفحه API کوئری MongoDB را ببین. سپس برای پاک سازی، بخش حذف (Delete) را دنبال کن.
جمع بندی سریع
updateOne()فقط اولین سند را تغییر می دهد.updateMany()همه تطابق ها را تغییر می دهد.$setمقدار فیلد را جایگزین می کند.$incمقدار عددی را افزایش می دهد.upsertنبود را بساز، بود را تغییر بده.