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

MongoDB-এ নেস্টেড সাব-অ্যারে থেকে এলিমেন্ট পুল (Pull) করা

গভীর নেস্টেড অ্যারে (সাব-অফ-সাব-অ্যারে) থেকে নির্দিষ্ট এলিমেন্ট মুছে ফেলতে $pull এবং পজিশনাল $ অপারেটর ব্যবহার করুন। একটি কালেকশন তৈরি করুন:

> db.demo679.insertOne({
    id:1,
    "details": [
        {
            CountryName:"US",
            "information": [
                { "Name": "Chris", "FirstName": "Name=Chris" },
                { "Name": "Bob", "FirstName": "Name=Bob" }
            ]
        },
        {
            CountryName:"UK",
            "information": [
                { "Name": "Robert", "FirstName": "Name=Robert" },
                { "Name": "Sam", "FirstName": "Name=Sam" }
            ]
        }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea442cf04263e90dac943fd") }

find() দিয়ে ডকুমেন্ট দেখান:

> db.demo679.find();

আউটপুট:

CountryName: "US" 가진 সাব-ডকুমেন্টের information অ্যারেতে Name: "Bob" মুছার কোয়ারি:

> db.demo679.update(
    { "details.CountryName":"US" },
    { $pull: { 'details.$.information': { "Name" : "Bob", "FirstName" : "Name=Bob" } } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

আপডেটের পর ডকুমেন্ট দেখান:

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

আউটপুট (Bob মুছে গেছে):

ব্যাখ্যা: details.CountryName: "US" কোয়ারি বাহ্যিক অ্যারেতে ম্যাচ করে। পজিশনাল $ সেই ম্যাচ করা এলিমেন্টকে (US অবজেক্ট) পয়েন্ট করে। $pull তার ভেতরের information অ্যারেতে শর্ত মেনে যাওয়া এলিমেন্ট মুছে দেয়। শুধু Name দিয়েও পুল করা যায়।

  1. MongoDB-এ সাব-কালেকশন সহ কনকারেন্ট আপডেট (update with $push)

  2. MongoDB-এ অ্যারে থেকে এলিমেন্ট মুছে ফেলা ($pull অপারেটর)

  3. MongoDB-এ JSON অ্যারের ভেতরের এলিমেন্ট এক্সেস করা (Dot Notation)

  4. MongoDB-তে সাব-ডকুমেন্ট দিয়ে সাব-ডকুমেন্ট ফিল্টার করা (aggregate + $unwind)