Hãy để chúng tôi xem một ví dụ và tạo một bộ sưu tập với các tài liệu -
> db.demo558.insertOne( ... { ... _id : 100, ... CountryCode:101, ... details: [ ... { ... Name:"Chris", ... Subject:"MySQL" ... }, ... { ... Name:"Chris", ... Subject:"MongoDB" ... }, ... { ... Name:"Chris", ... Subject:"Java" ... }, ... { ... Name:"Bob", ... Subject:"Python" ... }, ... { ... Name:"Bob", ... Subject:"Java" ... } ... ] ... } ... ) { "acknowledged" : true, "insertedId" : 100 }
Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -
> db.demo558.find();
Điều này sẽ tạo ra kết quả sau -
{ "_id" : 100, "CountryCode" : 101, "details" : [ { "Name" : "Chris", "Subject" : "MySQL" }, { "Name" : "Chris", "Subject" : "MongoDB" }, { "Name" : "Chris", "Subject" : "Java" }, { "Name" : "Bob", "Subject" : "Python" }, { "Name" : "Bob", "Subject" : "Java" } ] }
Sau đây là truy vấn để lấy số lượng -
> db.demo558.aggregate([ ... {$unwind: "$details" }, ... {$group: { _id: "$details.Name", NameCount:{$sum : 1}, Subject : {$push: "$details.Subject"}}}, ... {$project: { NameCount: 1, SubjectCount : {$size: "$Subject"}}} ... ]).pretty()
Điều này sẽ tạo ra kết quả sau -
{ "_id" : "Bob", "NameCount" : 2, "SubjectCount" : 2 } { "_id" : "Chris", "NameCount" : 3, "SubjectCount" : 3 }