ใช้เมธอด count() (Legacy) หรือ countDocuments() (Modern) เพื่อนับจำนวนเอกสารในคอลเลกชัน
รูปแบบคำสั่ง
วิธีเก่า (MongoDB Shell)
let myCollection = db.getCollection('collectionName');
myCollection.count();
วิธีใหม่ (แนะนำ MongoDB 4.0+)
// นับทั้งหมด
db.collection.countDocuments({});
// นับตามเงื่อนไข
db.collection.countDocuments({ "field": "value" });
ตัวอย่างเต็มรูปแบบ
1. สร้างข้อมูลตัวอย่าง
> db.countNumberOfDocumentsDemo.insertOne({"CustomerName":"Bob"});
> db.countNumberOfDocumentsDemo.insertOne({"CustomerName":"Ramit","CustomerAge":23});
> db.countNumberOfDocumentsDemo.insertOne({"CustomerName":"Adam","CustomerAge":27,"CustomerCountryName":"US"});
2. แสดงข้อมูลทั้งหมด
> db.countNumberOfDocumentsDemo.find().pretty();
{ "_id" : ..., "CustomerName" : "Bob" }
{ "_id" : ..., "CustomerName" : "Ramit", "CustomerAge" : 23 }
{ "_id" : ..., "CustomerName" : "Adam", "CustomerAge" : 27, "CustomerCountryName" : "US" }
3. นับจำนวนเอกสาร
> let myCollectionName = db.getCollection('countNumberOfDocumentsDemo');
> myCollectionName.count();
3
ความแตกต่าง count() vs countDocuments()
| คำสั่ง | MongoDB Version | ความแม่นยำ | Performance |
|---|---|---|---|
count() | Legacy (Deprecated) | อาจใช้ metadata estimate (ไม่แม่นยำถ้า sharded) | เร็ว |
countDocuments() | 4.0+ | แม่นยำ (Scan จริง) | ช้ากว่าเล็กน้อย |
estimatedDocumentCount() | 4.0+ | ประมาณการจาก metadata | เร็วที่สุด |
ตัวอย่างเพิ่มเติม
// นับตามเงื่อนไข
db.collection.countDocuments({ "CustomerAge": { $gt: 25 } });
// นับโดยประมาณ (เร็ว ไม่รองรับ filter)
db.collection.estimatedDocumentCount();
สรุป
- ใช้
countDocuments({})สำหรับนับทั้งหมด (แม่นยำ) - ใช้
countDocuments({ query })สำหรับนับตามเงื่อนไข - ใช้
estimatedDocumentCount()สำหรับนับโดยประมาณเร็ว (ไม่มี filter) - หลีกเลี่ยง
count()ในโค้ดใหม่ (Deprecated)