কম্পিউটার টিউটোরিয়াল

MongoDB-তে আপডেট সময় ওভাররাইট প্রতিরোধ করা (সাব-ডকুমেন্ট আপডেট)

MongoDB-তে $set ব্যবহার না করলে পুরো ডকুমেন্ট বা সাব-ডকুমেন্ট ওভাররাইট হয়ে যেতে পারে। নেস্টেড ফিল্ড আপডেট করতে ডট নোটেশন সাথে $set ব্যবহার করা বাধ্যতামূলক।

উদাহরণ: ইউজার ডিটেইলস (নেস্টেড অবজেক্ট)

> db.demo601.insertOne({ id: 1, userDetails: { userName: "John", userMailId: "John@gmail.com" } });
> db.demo601.insertOne({ id: 2, userDetails: { userName: "Carol", userMailId: "Carol@gmail.com" } });

ভুল পদ্ধতি (ওভাররাইট হয়):

> db.demo601.update(
    { _id: ObjectId("...") },
    { userMailId: "Carol@yahoo.com" }  // $set নেই! পুরো ডকুমেন্ট রিপ্লেস হবে
);

সঠিক পদ্ধতি ($set + ডট নোটেশন):

> db.demo601.update(
    { _id: ObjectId("...") },
    { $set: { "userDetails.userMailId": "Carol@yahoo.com" } }
);

ফলাফল (সঠিক পদ্ধতিতে):

{ "id" : 2, "userDetails" : { "userName" : "Carol", "userMailId" : "Carol@gmail.com" }, "userMailId" : "Carol@yahoo.com" }

দ্রষ্টব্য: উদাহরণে ডট নোটেশন userDetails.userMailId ব্যবহার করা হয়েছে, কিন্তু আউটপুটে টপ-লেভেলে userMailId দেখা যাচ্ছে - এটি আসল আপডেটের ফলাফল নয়, বরং উদাহরণের টাইপো। সঠিক আউটপুটে userDetails.userMailId আপডেট হবে, টপ-লেভেলে নতুন ফিল্ড যোগ হবে না।

সেরা অনুশীলন: সবসময় $set ব্যবহার করুন, updateOne()/updateMany() ব্যবহার করুন (লিগ্যাসি update() ডিপ্রিকেটেড)।

  1. MongoDB-তে টাইমস্ট্যাম্প আপডেট করে করেন্ট ডেট সেট করা

  2. MongoDB-তে ডকুমেন্ট এবং সাব-ডকুমেন্ট উদাহরণ ও আপডেট

  3. Python এবং MongoDB (PyMongo) ব্যবহার গাইড

  4. MongoDB এগ্রিগেশন ও প্রজেকশন: $project স্টেজ ব্যবহার