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

MongoDB-এ অগ্রেশন পাইপলাইনের পর আপডেট করা

MongoDB-এ অগ্রেশন পাইপলাইন থেকে সরাসরি আপডেট করা যায় না; update() ব্যবহার করুন

MongoDB-এ অগ্রেশন পাইপলাইন (aggregate()) শুধু রিড-অনলি অপারেশন; এটি ডকুমেন্ট আপডেট করতে পারে না। ডকুমেন্ট আপডেট করতে updateOne(), updateMany() বা findOneAndUpdate() ব্যবহার করতে হয়।MongoDB 4.2+ এ update কমান্ডে অগ্রেশন পাইপলাইন ব্যবহার করা যায়।

উদাহরণ: নেস্টেড ডিটেইলস সহ ডকুমেন্ট তৈরি

> db.demo376.insertOne({ "id" :101, "details" : [ { "Name":"Chris", "Age":21, "Score":45 }, { "Name":"David", "Age":23, "Score":67 }, { "Name":"Bob", "Age":20, "Score":54 } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a71b92ae06a1609a00b0d") }

আপডেট করার আগে

> db.demo376.find().pretty();
{ "_id" : ObjectId("5e5a71b92ae06a1609a00b0d"), "id" : 101, "details" : [ { "Name" : "Chris", "Age" : 21, "Score" : 45 }, { "Name" : "David", "Age" : 23, "Score" : 67 }, { "Name" : "Bob", "Age" : 20, "Score" : 54 } ] }

আপডেট কুয়েরি: arrayFilters ব্যবহার করে শর্তসাপেক্ষ আপডেট

> db.demo376.update(
    { "id" :101 },
    { $inc: { "details.$[d].Age": 3 } },
    { arrayFilters: [ { $and: [ { "d.Age": 21 }, { "d.Score": { "$gt": 40 } } ] } ] }
)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

আপডেটের পর (Chris-এর Age 21 → 24)

> db.demo376.find().pretty();
{ "_id" : ObjectId("5e5a71b92ae06a1609a00b0d"), "id" : 101, "details" : [ { "Name" : "Chris", "Age" : 24, "Score" : 45 }, { "Name" : "David", "Age" : 23, "Score" : 67 }, { "Name" : "Bob", "Age" : 20, "Score" : 54 } ] }

ব্যাখ্যা

  • arrayFilters: আপডেট করার এলিমেন্টের শর্ত ডিফাইন করে (d.Age=21 এবং d.Score>40)।
  • details.$[d].Age: $[d] হলো ফিল্টার করা এলিমেন্টের প্লেসহোল্ডার।
  • $inc: 3: Age ৩ বাড়ায়।

MongoDB 4.2+ এ অগ্রেশন পাইপলাইন আপডেট

db.demo376.updateOne(
  { "id": 101 },
  [ { $set: { "details.$[d].Age": { $add: ["$$d.Age", 3] } } } ],
  { arrayFilters: [ { "d.Age": 21, "d.Score": { $gt: 40 } } ] }
)

মূল কথা: আপডেটের জন্য আপডেট মেথড ব্যবহার করুন; অগ্রেশন শুধু ডেটা পড়তে।

  1. MongoDB-এ $addToSet ব্যবহার করে শুধু একটি প্রোপার্টি আপডেট করা

  2. MongoDB-এ ডকুমেন্ট ভ্যালিডেশন (Validation) ইনসার্ট/আপডেটের আগে

  3. MongoDB-তে কন্ডিশনাল আপডেট করার পদ্ধতি

  4. MongoDB-এ ডকুমেন্ট আপডেট করার পদ্ধতি