অ্যাগ্রিগেশন পাইপলাইনে $unwind, $group, $cond, $sort ব্যবহার করে ইনার অ্যারেতে নির্দিষ্ট ভ্যালুর কাউন্ট অনুযায়ী সর্ট করুন।
নমুনা ডেটা
> db.demo189.insertOne({"_id": 100, "List": [{"Value": 10}, {"Value": 20}, {"Value": 10}]});
> db.demo189.insertOne({"_id": 101, "List": [{"Value": 10}, {"Value": 10}, {"Value": 10}]});
পাইপলাইন (Value 10-এর কাউন্ট অনুযায়ী ডেসেন্ডিং সর্ট)
> db.demo189.aggregate([
{$unwind: "$List"},
{$group: {
_id: "$_id",
total: {$sum: {$cond: {if: {$eq: ["$List.Value", 10]}, then: 1, else: 0}}},
List: {$push: {Value: "$List.Value"}}
}},
{$sort: {total: -1}},
{$project: {List: 1}}
])
ফলাফল
{ "_id": 101, "List": [{"Value": 10}, {"Value": 10}, {"Value": 10}] }
{ "_id": 100, "List": [{"Value": 10}, {"Value": 20}, {"Value": 10}] }
_id: 101-এ ১০ এর কাউন্ট ৩, _id: 100-এ ২। তাই ১০১ আগে এল।