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

MongoDB-এ $zip এবং $map ব্যবহার করে দুটি অ্যারে জিপ (Zip) করে নতুন অবজেক্ট অ্যারে তৈরি


MongoDB এগ্রিগেশনে $zip, $map, $objectToArray ব্যবহার করে অ্যারে ট্রান্সপোজ করা

MongoDB-এ দুটি সমান্তরাল অ্যারে (Parallel Arrays) - যেন Score1 এবং Score2 - কে জিপ (Zip) করে একটি অবজেক্টের অ্যারে বানাতে $zip, $map, $objectToArray, $arrayToObject অপারেটরগুলো কম্বাইন করে ব্যবহার করা হয়।

১. কালেকশন ও নমুনা ডেটা তৈরি

> db.demo339.insertOne({Id:101, Score1:["98","56"], Score2:[67,89]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e529ee5f8647eb59e5620a2") }

২. ডকুমেন্ট দেখানো

> db.demo339.find();

আউটপুট:

{ "_id" : ObjectId("5e529ee5f8647eb59e5620a2"), "Id" : 101, "Score1" : [ "98", "56" ], "Score2" : [ 67, 89 ] }

৩. জটিল এগ্রিগেশন কোয়েরি দিয়ে জিপ করা

> db.demo339.aggregate([
  { "$project": {
      "AllArrayObject": {
        "$map": {
          "input": {
            "$objectToArray": {
              "$arrayToObject": {
                "$zip": {
                  "inputs": [ "$Score1", "$Score2" ]
                }
              }
            }
          },
          "as": "el",
          "in": { "Score1": "$$el.k", "Score2": "$$el.v" }
        }
      }
  }}
])

প্রক্রিয়া ব্যাখ্যা:

  1. $zip: {inputs: ["$Score1", "$Score2"]} - দুটি অ্যারে জিপ করে [["98", 67], ["56", 89]] বানায়।
  2. $arrayToObject - এটিকে অবজেক্ট বানায়: {"98": 67, "56": 89}।
  3. $objectToArray - আবার কি-ভ্যালু পেয়ারের অ্যারে বানায়: [{k:"98", v:67}, {k:"56", v:89}]।
  4. $map - প্রতিটি কি-ভ্যালু পেয়ারকে {Score1: k, Score2: v} ফরম্যাটে রূপান্তর করে।

৪. ফলাফল

{ "_id" : ObjectId("5e529ee5f8647eb59e5620a2"), "AllArrayObject" : [ { "Score1" : "98", "Score2" : 67 }, { "Score1" : "56", "Score2" : 89 } ] }

দুটি সমান্তরাল অ্যারে এখন একটি স্ট্রাকচার্ড অবজেক্ট অ্যারে-তে রূপান্তরিত হয়েছে।


  1. MongoDB-এ অ্যারে সাব-ডকুমেন্ট আপডেট: $set ও পজিশনাল $ অপারেটর

  2. MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট এলিমেন্টের মান ইনক্রিমেন্ট করা

  3. MongoDB-তে নতুন ইউজার তৈরি করা এবং রোল সেট করা (userAdminAnyDatabase)

  4. MongoDB-এ অ্যারে বিশিষ্ট এক রেকর্ডকে একাধিক রেকর্ডে রূপান্তর করা (নতুন কালেকশনে)