Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

ทำการเรียงลำดับการรวมใน MongoDB หรือไม่


คุณสามารถใช้วิธี aggregate() ร่วมกับตัวดำเนินการ $sort() สำหรับสิ่งนี้ เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -

> db.aggregationSortDemo.insertOne({"StudentId":98,"StudentFirstName":"John","StudentLastName":"Smith"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90140c5705caea966c5587")
}
> db.aggregationSortDemo.insertOne({"StudentId":128,"StudentFirstName":"Carol","StudentLastName":"Taylor"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90141b5705caea966c5588")
}
> db.aggregationSortDemo.insertOne({"StudentId":110,"StudentFirstName":"David","StudentLastName":"Miller"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90142f5705caea966c5589")
}
> db.aggregationSortDemo.insertOne({"StudentId":139,"StudentFirstName":"Chris","StudentLastName":"Brown"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90146a5705caea966c558a")
}
> db.aggregationSortDemo.insertOne({"StudentId":125,"StudentFirstName":"Sam","StudentLastName":"Williams"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9015695705caea966c558b")
}
> db.aggregationSortDemo.insertOne({"StudentId":139,"StudentFirstName":"Mike","StudentLastName":"Wilson"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90158e5705caea966c558c")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังต่อไปนี้ −

> db.aggregationSortDemo.find().pretty();

ต่อไปนี้เป็นผลลัพธ์ -

{
   "_id" : ObjectId("5c90140c5705caea966c5587"),
   "StudentId" : 98,
   "StudentFirstName" : "John",
   "StudentLastName" : "Smith"
}
{
   "_id" : ObjectId("5c90141b5705caea966c5588"),
   "StudentId" : 128,
   "StudentFirstName" : "Carol",
   "StudentLastName" : "Taylor"
}
{
   "_id" : ObjectId("5c90142f5705caea966c5589"),
   "StudentId" : 110,
   "StudentFirstName" : "David",
   "StudentLastName" : "Miller"
}
{
   "_id" : ObjectId("5c90146a5705caea966c558a"),
   "StudentId" : 139,
   "StudentFirstName" : "Chris",
   "StudentLastName" : "Brown"
}
{
   "_id" : ObjectId("5c9015695705caea966c558b"),
   "StudentId" : 125,
   "StudentFirstName" : "Sam",
   "StudentLastName" : "Williams"
}
{
   "_id" : ObjectId("5c90158e5705caea966c558c"),
   "StudentId" : 139,
   "StudentFirstName" : "Mike",
   "StudentLastName" : "Wilson"
}

นี่คือแบบสอบถามสำหรับการเรียงลำดับการรวม MongoDB

กรณีที่ 1 − เมื่อใดก็ตามที่คุณต้องการผลลัพธ์ในลำดับจากมากไปน้อย แบบสอบถามมีดังต่อไปนี้ −

> 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 }

กรณีที่ 2 − เมื่อใดก็ตามที่คุณต้องการผลลัพธ์ในลำดับจากน้อยไปมาก แบบสอบถามมีดังต่อไปนี้ −

> 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 }