หากต้องการนับค่าเฉพาะใน MongoDB ให้ใช้ aggregate() ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo210.insertOne( ... { ... details: [ ... { ... ClientName: "Robert" ... }, ... { ... ... lientName: "John Doe" ... }, ... { ... ... ClientName: "Robert" ... }, ... { ... ... ClientName: "Robert" ... }, ... { ... ... ClientName: "David Miller" ... } ... ] ... } ...); { "acknowledged" : true, "insertedId" : ObjectId("5e3d99ab03d395bdc21346f9") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo210.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e3d99ab03d395bdc21346f9"), "details" : [ { "ClientName" : "Robert" }, { "ClientName" : "John Doe" }, { "ClientName" : "Robert" }, { "ClientName" : "Robert" }, { "ClientName" : "David Miller" } ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อรับการนับค่าเฉพาะ -
> db.demo210.aggregate([ ... { "$match" : { "details.ClientName" : "Robert" } }, ... { "$unwind" : "$details" }, ... { "$match" : { "details.ClientName" : "Robert" } }, ... { "$group" : { "_id" : "$_id", "Size" : { "$sum" : 1 } } }, ... { "$match" : { "Size" : { "$gte" : 2 } } } ...]);
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e3d99ab03d395bdc21346f9"), "Size" : 3 }