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

การเรียงลำดับคอลเล็กชัน MongoDB ตามค่าในอาร์เรย์


เพื่อเรียงลำดับคอลเล็กชัน 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 } } }