หากต้องการนับค่าเฉพาะใน 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 }