एग्रीगेशन में $add और $sort
दो संख्यात्मक फील्ड के योग की गणना करके परिणामों को क्रमबद्ध करने के लिए, एग्रीगेशन पाइपलाइन में $project के अंदर $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") }
केस 1: आरोही क्रम (Ascending)
> db.orderByTwoFieldsDemo.aggregate([
... {$project: {Value1:1, Value2:1, orderBySumValue: {$add: ["$Value1", "$Value2"]}}},
... {$sort: {orderBySumValue: 1}}
... ]);
आउटपुट:
केस 2: अवरोही क्रम (Descending)
> db.orderByTwoFieldsDemo.aggregate([ ... {$project: {Value1:1, Value2:1, orderBySumValue: {$add: ["$Value1", "$Value2"]}}}, ... {$sort: {orderBySumValue: -1}} ... ]);आउटपुट:
नोट:
$addसरणी लेता है:[$add: ["$field1", "$field2"]]। आप एक से अधिक फील्ड भी जोड़ सकते हैं। गणना फील्ड (orderBySumValue) केवल पाइपलाइन के लिए मौजूद होता है, मूल दस्तावेज़ में नहीं जुड़ता।