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

MongoDB-এ findAndModify() দিয়ে অ্যারে আপডেট করা

MongoDB-এ findAndModify() ব্যবহার করে অ্যাটোমিক অ্যারে আপডেট

findAndModify() (বা আধুনিক findOneAndUpdate()) একটি ডকুমেন্ট খুঁজে, আপডেট করে এবং পুরনো/নতুন ভার্সন রিটার্ন করে — সবই একটি অ্যাটোমিক অপারেশনে। এটি কনকারেন্সি নিরাপদ।

উদাহরণ: ডেটা ইনসার্ট

> db.demo152.insertOne({"id":102,"Name":["Chris","David"],"Score":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3515bcfdf09dd6d08539dd") }
> db.demo152.insertOne({"id":103,"Name":["Mike","Carol"],"Score":65});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3515cafdf09dd6d08539de") }

সব ডকুমেন্ট দেখানো

> db.demo152.find();

আউটপুট:

{ "_id" : ObjectId("5e3515bcfdf09dd6d08539dd"), "id" : 102, "Name" : [ "Chris", "David" ], "Score" : 45 }
{ "_id" : ObjectId("5e3515cafdf09dd6d08539de"), "id" : 103, "Name" : [ "Mike", "Carol" ], "Score" : 65 }

findAndModify কোয়ারি (id=102, Score<50, Name="Chris" হলে Name.$="Robert" এবং Score+20)

> var d = db.demo152.findAndModify({
...     query: { id:102, Score: {$lt:50}, Name: "Chris" },
...     update: { $set : {"Name.$": "Robert"}, $inc: {Score: 20 } }
... })

আপডেট পর পরিদর্শন

> db.demo152.find();

আউটপুট:

{ "_id" : ObjectId("5e3515bcfdf09dd6d08539dd"), "id" : 102, "Name" : [ "Robert", "David" ], "Score" : 65 }
{ "_id" : ObjectId("5e3515cafdf09dd6d08539de"), "id" : 103, "Name" : [ "Mike", "Carol" ], "Score" : 65 }

ব্যাখ্যা

  • query — ফিল্টার: id=102, Score<50, এবং অ্যারেতে "Chris" আছে।
  • update — $set: {"Name.$": "Robert"} এখানে $ পজিশনাল অপারেটর: কোয়ারিতে মিলা অ্যারে ইন্ডেক্সকে বোঝায় (এখানে ০)।
  • $inc: {Score: 20} — Score ২০ বাড়িয়েছে।
  • ফলাফলে "Chris" → "Robert" এবং Score 45 → 65।

সুপারিশ: নতুন কোডে findOneAndUpdate() ব্যবহার করুন, এটি আরও ফ্লেক্সিবল (returnNewDocument অপশন আছে)।

  1. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি

  2. MongoDB-তে অ্যারے के ভেতরের এলিমেন্ট আপডেট

  3. MongoDB-এ নেস্টেড অ্যারে সর্ট করা

  4. MongoDB-তে নেস্টেড ডকুমেন্ট আপডেট করা (ডট নোটেশন + পজিশনাল $)