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

MongoDB Aggregate-এ অ্যারে উপাদানের পার্থক্য (Difference) দিয়ে সর্ট করা

MongoDB Aggregate Pipeline-এ অ্যারে উপাদানের পার্থক্য ক্যালকুলেট করে সর্ট

যখন ডকুমেন্টে অ্যারে থাকে এবং সেখানে দুটি সংখ্যার পার্থক্য (সাবট্রাকশন) অনুযায়ী সর্ট করতে হয়, তবে $project-এ $let, $arrayElemAt, $subtract ব্যবহার করে পার্থক্য বের করে $sort দিতে হয়।

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

> db.demo155.insertOne({"Scores":[{"Value":45},{"Value":50}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e354584fdf09dd6d08539e3") }
> db.demo155.insertOne({"Scores":[{"Value":60},{"Value":10}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e35458efdf09dd6d08539e4") }
> db.demo155.insertOne({"Scores":[{"Value":100},{"Value":95}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e354599fdf09dd6d08539e5") }

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

> db.demo155.find();

আউটপুট:

{ "_id" : ObjectId("5e354584fdf09dd6d08539e3"), "Scores" : [ { "Value" : 45 }, { "Value" : 50 } ] }
{ "_id" : ObjectId("5e35458efdf09dd6d08539e4"), "Scores" : [ { "Value" : 60 }, { "Value" : 10 } ] }
{ "_id" : ObjectId("5e354599fdf09dd6d08539e5"), "Scores" : [ { "Value" : 100 }, { "Value" : 95 } ] }

অ্যাগ্রিগেশন পাইপলাইন: পার্থক্য বের করে ডিসেন্ডিং সর্ট

> db.demo155.aggregate([
...     { "$match": { "Scores.1": { "$exists": true } } },
...     { "$project": {
...         "Scores": "$Scores",
...         "sub": {
...             "$let": {
...                 "vars": {
...                     "f": { "$arrayElemAt": [ "$Scores", -2 ] },
...                     "l": { "$arrayElemAt": [ "$Scores", -1 ] }
...                 },
...                 "in": { "$subtract": [ "$$l.Value", "$$f.Value" ] }
...             }
...         }
...     }},
...     { "$sort": { "sub": -1 } }
... ])

আউটপুট:

{ "_id" : ObjectId("5e354584fdf09dd6d08539e3"), "Scores" : [ { "Value" : 45 }, { "Value" : 50 } ], "sub" : 5 }
{ "_id" : ObjectId("5e354599fdf09dd6d08539e5"), "Scores" : [ { "Value" : 100 }, { "Value" : 95 } ], "sub" : -5 }
{ "_id" : ObjectId("5e35458efdf09dd6d08539e4"), "Scores" : [ { "Value" : 60 }, { "Value" : 10 } ], "sub" : -50 }

ব্যাখ্যা

  • $match — নিশ্চিত করে অ্যারেতে কমপক্ষে ২টি উপাদান আছে (Scores.1 মানে ২য় উপাদান)۔
  • $arrayElemAt: ["$Scores", -2] — শেষ থেকে ২য় উপাদান (এখানে প্রথমটি)۔
  • $arrayElemAt: ["$Scores", -1] — শেষ উপাদান (২য়টি)۔
  • $subtract: ["$$l.Value", "$$f.Value"] — শেষ মান থেকে প্রথম মান বিয়োগ।
  • $sort: {sub: -1} — পার্থক্য বড় থেকে ছোট (ডিসেন্ডিং) সর্ট।

নোট: অ্যারে লেন্থ ফিক্সড না হলে $size চেক বা $reduce ব্যবহার করুন।

  1. MongoDB-এ অ্যারেতে এলিমেন্ট যুক্ত করার পদ্ধতি

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

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

  4. C#-এ অ্যারে ক্লাসের Sort() মেথড ব্যবহার