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

MongoDB-এ ইনার অ্যারে সর্ট কীভাবে করবেন?

MongoDB-এ নেস্টেড বা ইনার অ্যারে সর্ট করার জন্য অ্যাগ্রিগেশন পাইপলাইন ব্যবহার করা হয়। $unwind দিয়ে অ্যারে ফ্ল্যাটেন করা, $sort দিয়ে সর্ট করা, এবং আবার $group দিয়ে অ্যারে পুনর্গঠন করা প্রক্রিয়া অনুসরণ করতে হয়।

নমুনা কালেকশন তৈরি

> db.sortInnerArrayDemo.insertOne({
  "EmployeeDetails": {
    "EmployeeAddress": {
      "EmployeeCountry": [
        { "EmployeeZipCode": 1003, "EmployeeStreetName": "7885 Trusel Street" },
        { "EmployeeZipCode": 1001, "EmployeeStreetName": "7390 Gonzales Drive" },
        { "EmployeeZipCode": 1002, "EmployeeStreetName": "444 N.Myres Rd." }
      ]
    }
  }
});
{ "acknowledged": true, "insertedId": ObjectId("5c6f07d3da34711ecf87a5b8") }

ডকুমেন্ট প্রদর্শন

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

আউটপুট (সর্ট করার আগে):

{
  "_id": ObjectId("5c6f07d3da34711ecf87a5b8"),
  "EmployeeDetails": {
    "EmployeeAddress": {
      "EmployeeCountry": [
        { "EmployeeZipCode": 1003, "EmployeeStreetName": "7885 Trusel Street" },
        { "EmployeeZipCode": 1001, "EmployeeStreetName": "7390 Gonzales Drive" },
        { "EmployeeZipCode": 1002, "EmployeeStreetName": "444 N.Myres Rd." }
      ]
    }
  }
}

কেস ১: অ্যাসেন্ডিং অর্ডারে সর্ট

> db.sortInnerArrayDemo.aggregate([
  { $unwind: '$EmployeeDetails.EmployeeAddress.EmployeeCountry' },
  { $sort: { 'EmployeeDetails.EmployeeAddress.EmployeeCountry.EmployeeZipCode': 1 } },
  { $group: { 
      _id: '$_id', 
      'EmpCountry': { $push: '$EmployeeDetails.EmployeeAddress.EmployeeCountry' } 
    }
  },
  { $project: { 'EmployeeDetails.EmployeeAddress.EmployeeCountry': '$EmpCountry' } }
]).pretty();

ফলাফল (অ্যাসেন্ডিং)

{
  "_id": ObjectId("5c6f07d3da34711ecf87a5b8"),
  "EmployeeDetails": {
    "EmployeeAddress": {
      "EmployeeCountry": [
        { "EmployeeZipCode": 1001, "EmployeeStreetName": "7390 Gonzales Drive" },
        { "EmployeeZipCode": 1002, "EmployeeStreetName": "444 N.Myres Rd." },
        { "EmployeeZipCode": 1003, "EmployeeStreetName": "7885 Trusel Street" }
      ]
    }
  }
}

কেস ২: ডিসেন্ডিং অর্ডারে সর্ট

> db.sortInnerArrayDemo.aggregate([
  { $unwind: '$EmployeeDetails.EmployeeAddress.EmployeeCountry' },
  { $sort: { 'EmployeeDetails.EmployeeAddress.EmployeeCountry.EmployeeZipCode': -1 } },
  { $group: { 
      _id: '$_id', 
      'EmpCountry': { $push: '$EmployeeDetails.EmployeeAddress.EmployeeCountry' } 
    }
  },
  { $project: { 'EmployeeDetails.EmployeeAddress.EmployeeCountry': '$EmpCountry' } }
]).pretty();

ফলাফল (ডিসেন্ডিং)

{
  "_id": ObjectId("5c6f07d3da34711ecf87a5b8"),
  "EmployeeDetails": {
    "EmployeeAddress": {
      "EmployeeCountry": [
        { "EmployeeZipCode": 1003, "EmployeeStreetName": "7885 Trusel Street" },
        { "EmployeeZipCode": 1002, "EmployeeStreetName": "444 N.Myres Rd." },
        { "EmployeeZipCode": 1001, "EmployeeStreetName": "7390 Gonzales Drive" }
      ]
    }
  }
}

ব্যাখ্যা: $unwind ইনার অ্যারের প্রতিটি এলিমেন্টকে আলাদা ডকুমেন্টে রূপান্তর করে। $sort সেটি সর্ট করে। $group আবার মূল _id দিয়ে গ্রুপ করে $push দিয়ে অ্যারে পুনরায় তৈরি করে। $project আউটপুট ফরম্যাট ঠিক করে।

  1. জাভাস্ক্রিপ্টে ডেট অ্যারে সর্ট করা

  2. অ্যান্ড্রয়েডে অ্যারে এলিমেন্ট সর্ট করার পদ্ধতি

  3. MongoDB-তে অ্যারের ভ্যালু অনুযায়ী কালেকশন সর্ট করা (aggregate + $unwind + $sort)

  4. C#-তে অ্যারে সর্ট (Sort) করার পদ্ধতি