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

การใช้ MongoDB Aggregation เพื่อดึงเอกสาร 2 รายการที่มีคะแนนน้อยที่สุด


เพื่อให้ได้รายการคะแนนที่เรียงลำดับแล้ว ให้ใช้ $sort และใช้ $limit: 2 เพื่อแสดงเฉพาะ 2 เอกสารที่มีคะแนนน้อยที่สุด มาสร้างคอลเล็กชันกันเถอะ

> db.demo709.insertOne({Name:"John","Marks":75});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839005d33e20ed1097b76") }
> db.demo709.insertOne({Name:"Chris","Marks":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839075d33e20ed1097b77") }
> db.demo709.insertOne({Name:"David","Marks":54});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839125d33e20ed1097b78") }
> db.demo709.insertOne({Name:"Bob","Marks":69});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839295d33e20ed1097b79") }

แสดงเอกสารทั้งหมดด้วยเมธอด find()

> db.demo709.find();

ผลลัพธ์ที่ได้

{ "_id" : ObjectId("5ea839005d33e20ed1097b76"), "Name" : "John", "Marks" : 75 }
{ "_id" : ObjectId("5ea839075d33e20ed1097b77"), "Name" : "Chris", "Marks" : 45 }
{ "_id" : ObjectId("5ea839125d33e20ed1097b78"), "Name" : "David", "Marks" : 54 }
{ "_id" : ObjectId("5ea839295d33e20ed1097b79"), "Name" : "Bob", "Marks" : 69 }

คำสั่ง Aggregation เพื่อดึง 2 เอกสารที่มีคะแนนน้อยที่สุด

> db.demo709.aggregate({
    $group: {
        _id: '$Marks',
        ListOfName: { $push: '$Name' }
    }
}, {
    $sort: {
        '_id': 1
    }
}, {
    $limit: 2
});

ผลลัพธ์ที่ได้

{ "_id" : 45, "ListOfName" : [ "Chris" ] }
{ "_id" : 54, "ListOfName" : [ "David" ] }