คุณสามารถใช้ตัวดำเนินการ $facet สำหรับสิ่งนี้ เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -
> db.totalDocumentDemo.insertOne({"InstructorId":100,"InstructorName":"Larry","InstructorFav ouriteSubject":["Java","MongoDB","Python"]}); { "acknowledged" : true, "insertedId" : ObjectId("5c76e6701e9c5dd6f1f78274") } > db.totalDocumentDemo.insertOne({"InstructorId":200,"InstructorName":"Sam","InstructorFav ouriteSubject":["SQL Server","C#","Javascript"]}); { "acknowledged" : true, "insertedId" : ObjectId("5c76e69c1e9c5dd6f1f78275") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้ −
> 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" ] }
นี่คือแบบสอบถามเพื่อรับจำนวนเอกสารทั้งหมดจากคอลเลกชัน -
> 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 } ] }