เพื่อเรียงลำดับคอลเล็กชัน MongoDB ตามค่าในอาร์เรย์ ให้ใช้ aggregate() ร่วมกับ $sort มาสร้างคอลเล็กชันกันเถอะ
> db.demo577.insertOne(
{
"student": {
"details": [
{
Name:"Chris",
Score:45
},
{
Name:"Bob",
Score:33
},
{
Name:"David",
Score:48
}
]
}
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e916ff1581e9acd78b427ff") }
แสดงเอกสารทั้งหมดด้วยเมธอด find()
> db.demo577.find();
ผลลัพธ์ที่ได้
{ "_id" : ObjectId("5e916ff1581e9acd78b427ff"), "student" : { "details" : [ { "Name" : "Chris", "Score" : 45 }, { "Name" : "Bob", "Score" : 33 }, { "Name" : "David", "Score" : 48 } ] } }
คำสั่งเรียงลำดับคอลเล็กชันตามค่าในอาร์เรย์ (Score เรียงมากไปน้อย)
> db.demo577.aggregate([
{$unwind:"$student"},
{$unwind:"$student.details"},
{$sort:{"student.details.Score":-1}}
]);
ผลลัพธ์ที่ได้
{ "_id" : ObjectId("5e916ff1581e9acd78b427ff"), "student" : { "details" : { "Name" : "David", "Score" : 48 } } }
{ "_id" : ObjectId("5e916ff1581e9acd78b427ff"), "student" : { "details" : { "Name" : "Chris", "Score" : 45 } } }
{ "_id" : ObjectId("5e916ff1581e9acd78b427ff"), "student" : { "details" : { "Name" : "Bob", "Score" : 33 } } }