MongoDB-তে নেস্টেড অ্যারে ভিতরের নির্দিষ্ট সাব-ডকুমেন্ট আপডেট করতে কোয়েরিতে সাব-ডকুমেন্টের _id দিয়ে ম্যাচ করে, পজিশনাল $ অপারেটর দিয়ে সেটি আপডেট করা হয়।
উদাহরণ: ইনফরমেশন অ্যারে (প্রতিটি এলিমেন্টের আলাদা _id)
> db.demo595.insertOne({
"Information": [
{ "_id": new ObjectId(), Name: "Chris" },
{ "_id": new ObjectId(), Name: "Robert" }
]
});
নেস্টেড ডকুমেন্ট আপডেট: Chris -> David Miller
> db.demo595.update(
{ "Information._id": ObjectId("5e93369cfd2d90c177b5bce2") },
{ $set: { "Information.$.Name": "David Miller" } }
);
রেজাল্ট: WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ফলাফল
> db.demo595.find().pretty();
আউটপুট: Chris-এর জায়গায় "David Miller" দেখাবে, Robert অপরিবর্তিত।
মূল পয়েন্ট:
- কোয়েরিতে
Information._idদিয়ে নির্দিষ্ট সাব-ডকুমেন্ট টার্গেট করা হয়েছে Information.$.Name-$কোয়েরিতে ম্যাচ করা অ্যারে এলিমেন্টকে নির্দেশ করে- প্রতিটি সাব-ডকুমেন্টে यুনিক
_idরাখা এই প্যাটার্নের জন্য বেস্ট প্র্যাকটিস - MongoDB ৩.৬+ এ
arrayFiltersদিয়ে আরও স্পষ্টভাবে করা যায়