ใช้ $sort ใน Aggregation Pipeline
ใน Aggregation Framework ใช้ stage $sort เพื่อจัดเรียงผลลัพธ์ ร่วมกับ $group หรือ stage อื่นๆ
ตัวอย่างข้อมูล
สร้างคอลเลกชัน aggregationSortDemo มีข้อมูลนักเรียนซ้ำ StudentId:
> db.aggregationSortDemo.insertOne({"StudentId":98,"StudentFirstName":"John","StudentLastName":"Smith"});
> db.aggregationSortDemo.insertOne({"StudentId":128,"StudentFirstName":"Carol","StudentLastName":"Taylor"});
> db.aggregationSortDemo.insertOne({"StudentId":110,"StudentFirstName":"David","StudentLastName":"Miller"});
> db.aggregationSortDemo.insertOne({"StudentId":139,"StudentFirstName":"Chris","StudentLastName":"Brown"});
> db.aggregationSortDemo.insertOne({"StudentId":125,"StudentFirstName":"Sam","StudentLastName":"Williams"});
> db.aggregationSortDemo.insertOne({"StudentId":139,"StudentFirstName":"Mike","StudentLastName":"Wilson"});
Case 1: เรียงจากมากไปน้อย (Descending)
> db.aggregationSortDemo.aggregate([
{$group: {_id: '$StudentId', "TotalOccurrences": {$sum: 1}}},
{$sort: {_id: -1}}
]).pretty();
ผลลัพธ์:
{ "_id" : 139, "TotalOccurrences" : 2 }
{ "_id" : 128, "TotalOccurrences" : 1 }
{ "_id" : 125, "TotalOccurrences" : 1 }
{ "_id" : 110, "TotalOccurrences" : 1 }
{ "_id" : 98, "TotalOccurrences" : 1 }
Case 2: เรียงจากน้อยไปมาก (Ascending)
> db.aggregationSortDemo.aggregate([
{$group: {_id: '$StudentId', "TotalOccurrences": {$sum: 1}}},
{$sort: {_id: 1}}
]).pretty();
ผลลัพธ์:
{ "_id" : 98, "TotalOccurrences" : 1 }
{ "_id" : 110, "TotalOccurrences" : 1 }
{ "_id" : 125, "TotalOccurrences" : 1 }
{ "_id" : 128, "TotalOccurrences" : 1 }
{ "_id" : 139, "TotalOccurrences" : 2 }
ใช้ 1 สำหรับ ascending, -1 สำหรับ descending