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

MongoDB-তে JSON লিস্ট/অ্যারেতে থাকা কী-এর ভ্যালু আপডেট কীভাবে করবেন?

শেল ফরইচ লুপ + $set

MongoDB-তে সরাসরি অ্যারে এলিমেন্ট আপডেট করার জন্য পজিশনাল অপারেটর $ ব্যবহার করা যায়, কিন্তু সব এলিমেন্ট আপডেট করতে শেল-এ forEach লুপ করে ডকুমেন্ট মডিফাই করে save() বা update() দিয়ে সেভ করা সহজ।

উদাহরণ: অ্যারে অফ অবজেক্টস সহ ডকুমেন্ট

> db.updateListOfKeyValuesDemo.insertOne({
    "StudentDetails": [
        { "StudentName": "John", "StudentAge": 23, "StudentCountryName": "US" },
        { "StudentName": "Carol", "StudentAge": 24, "StudentCountryName": "UK" },
        { "StudentName": "Bob", "StudentAge": 22, "StudentCountryName": "AUS" }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9b5b759882024390176545") }

আপডেট: সব StudentName "Ramit" করা

> var doc = db.updateListOfKeyValuesDemo.findOne({ "_id": ObjectId("5c9b5b759882024390176545") });
> doc.StudentDetails.forEach(function(item) {
    item.StudentName = "Ramit";
});
> db.updateListOfKeyValuesDemo.update(
    { "_id": doc._id },
    { $set: { "StudentDetails": doc.StudentDetails } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ফাইনাল ডেটা

> db.updateListOfKeyValuesDemo.find().pretty();

আউটপুট: তিনটি এলিমেন্টের StudentName সব "Ramit" হয়েছে।

বিকল্প: Aggregation Pipeline Update (MongoDB 4.2+)

db.updateListOfKeyValuesDemo.updateMany(
    {},
    [{ $set: { "StudentDetails": { $map: { input: "$StudentDetails", as: "s", in: { $mergeObjects: ["$$s", { StudentName: "Ramit" }] } } } } }]
);

সারসংক্ষেপ: সিম্পল কেসের জন্য শেল forEach + save() সহজ; প্রোডাকশনে আটোমিক আপডেটের জন্য পাইপলাইন আপডেট বা arrayFilters ব্যবহার করুন।

  1. MongoDB-এ নির্দিষ্ট ফিল্ড মান আপডেট করা ($set অপারেটর)

  2. পাইথনে ডিকশনারিতে কী-এর ভ্যালু আপডেট কীভাবে করবেন?

  3. পাইথন লিস্ট এলিমেন্টের ভ্যালু আপডেট কীভাবে করবেন?

  4. পাইথন টাপল এলিমেন্টের ভ্যালু আপডেট কীভাবে করবেন?