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

นับจำนวนเอกสารทั้งหมดใน MongoDB พร้อมใช้ limit ด้วย $facet

ใช้โอเปอเรเตอร์ $facet ใน Aggregate Framework เพื่อดึงข้อมูลพร้อมนับจำนวนเอกสารทั้งหมดในคอลเลกชัน (เหมาะสำหรับการทำ pagination)

ตัวอย่างการใช้งาน

สร้างคอลเลกชัน totalDocumentDemo:

> db.totalDocumentDemo.insertOne({"InstructorId":100,"InstructorName":"Larry","InstructorFavouriteSubject":["Java","MongoDB","Python"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c76e6701e9c5dd6f1f78274") }
> db.totalDocumentDemo.insertOne({"InstructorId":200,"InstructorName":"Sam","InstructorFavouriteSubject":["SQL Server","C#","Javascript"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c76e69c1e9c5dd6f1f78275") }

แสดงข้อมูลทั้งหมด:

> db.totalDocumentDemo.find().pretty();
{"_id" : ObjectId("5c76e6701e9c5dd6f1f78274"), "InstructorId" : 100, "InstructorName" : "Larry", "InstructorFavouriteSubject" : [ "Java", "MongoDB", "Python" ] }
{"_id" : ObjectId("5c76e69c1e9c5dd6f1f78275"), "InstructorId" : 200, "InstructorName" : "Sam", "InstructorFavouriteSubject" : [ "SQL Server", "C#", "Javascript" ] }

คำสั่ง Aggregate ด้วย $facet:

> db.totalDocumentDemo.aggregate([
... {
... $facet:{
... Alldata:[{$match:{}}],
... totalDocument: [{ $count: 'totalDocument' }]
... }
... }
... ]).pretty();
{
  "Alldata" : [
    {"_id" : ObjectId("5c76e6701e9c5dd6f1f78274"), "InstructorId" : 100, "InstructorName" : "Larry", "InstructorFavouriteSubject" : [ "Java", "MongoDB", "Python" ] },
    {"_id" : ObjectId("5c76e69c1e9c5dd6f1f78275"), "InstructorId" : 200, "InstructorName" : "Sam", "InstructorFavouriteSubject" : [ "SQL Server", "C#", "Javascript" ] }
  ],
  "totalDocument" : [
    {"totalDocument" : 2}
  ]
}

ผลลัพธ์ประกอบด้วย 2 ส่วน: Alldata (ข้อมูลทั้งหมด) และ totalDocument (จำนวนรวม)