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

วิธีนับจำนวนเอกสารในคอลเลกชัน MongoDB ด้วย count() และ countDocuments()

ใช้เมธอด 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)