MongoDB-তে অগ리게শন ফ্রেমওয়ার্ক ব্যবহার করে দুটি ফিল্ডের যোগফলের ওপর সর্ট করা
MongoDB-তে দুটি নমেরিক ফিল্ডের যোগফল (sum) ক্যালকুলেট করে সেটি অনুযায়ী সর্ট করতে $add এবং $sort অপারেটর ব্যবহার করতে হয়।
ধাপ ১: ডকুমেন্টসহ কালেকশন তৈরি করুন
> db.orderByTwoFieldsDemo.insertOne({"Value1":10,"Value2":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca285576304881c5ce84baa") }
> db.orderByTwoFieldsDemo.insertOne({"Value1":12,"Value2":5});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca2855f6304881c5ce84bab") }
> db.orderByTwoFieldsDemo.insertOne({"Value1":55,"Value2":65});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca285686304881c5ce84bac") }
ধাপ ২: সব ডকুমেন্ট প্রদর্শন করুন
> db.orderByTwoFieldsDemo.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5ca285576304881c5ce84baa"),
"Value1" : 10,
"Value2" : 35
}
{
"_id" : ObjectId("5ca2855f6304881c5ce84bab"),
"Value1" : 12,
"Value2" : 5
}
{
"_id" : ObjectId("5ca285686304881c5ce84bac"),
"Value1" : 55,
"Value2" : 65
}
কেস ১: যোগফল অনুযায়ী অ্যাসেন্ডিং অর্ডারে সর্ট
> db.orderByTwoFieldsDemo.aggregate([
{$project: {
Value1: 1,
Value2: 1,
orderBySumValue: {$add: ["$Value1", "$Value2"]}
}},
{$sort: {orderBySumValue: 1}}
]);
ফলাফল:
{
"_id" : ObjectId("5ca2855f6304881c5ce84bab"),
"Value1" : 12,
"Value2" : 5,
"orderBySumValue" : 17
}
{
"_id" : ObjectId("5ca285576304881c5ce84baa"),
"Value1" : 10,
"Value2" : 35,
"orderBySumValue" : 45
}
{
"_id" : ObjectId("5ca285686304881c5ce84bac"),
"Value1" : 55,
"Value2" : 65,
"orderBySumValue" : 120
}
কেস ২: যোগফল অনুযায়ী ডিসেন্ডিং অর্ডারে সর্ট
> db.orderByTwoFieldsDemo.aggregate([
{$project: {
Value1: 1,
Value2: 1,
orderBySumValue: {$add: ["$Value1", "$Value2"]}
}},
{$sort: {orderBySumValue: -1}}
]);
ফলাফল:
{
"_id" : ObjectId("5ca285686304881c5ce84bac"),
"Value1" : 55,
"Value2" : 65,
"orderBySumValue" : 120
}
{
"_id" : ObjectId("5ca285576304881c5ce84baa"),
"Value1" : 10,
"Value2" : 35,
"orderBySumValue" : 45
}
{
"_id" : ObjectId("5ca2855f6304881c5ce84bab"),
"Value1" : 12,
"Value2" : 5,
"orderBySumValue" : 17
}
ব্যাখ্যা: $project স্টেজে $add অপারেটর ব্যবহার করে Value1 এবং Value2 যোগ করে নতুন ফিল্ড orderBySumValue তৈরি করা হয়েছে। তারপর $sort স্টেজে সেটি অনুযায়ী সর্ট করা হয়েছে। 1 = অ্যাসেন্ডিং, -1 = ডিসেন্ডিং।