Sử dụng aggregation framework. Tạo collection:
> db.topCountArrayDemo.insertOne(
{"StudentId":101 , "StudentSubject": ["C", "MongoDB"]}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6b3209cb58ca2b005e669") }
> db.topCountArrayDemo.insertOne(
{"StudentId":102 , "StudentSubject": ["C", "Java"]}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6b3219cb58ca2b005e66a") }
> db.topCountArrayDemo.insertOne(
{"StudentId":103 , "StudentSubject": ["C", "MongoDB"]}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6b3229cb58ca2b005e66b") }
Hiển thị tất cả:
> db.topCountArrayDemo.find().pretty();
Kết quả:
{ "_id" : ObjectId("5cc6b3209cb58ca2b005e669"), "StudentId" : 101, "StudentSubject" : [ "C", "MongoDB" ] }
{ "_id" : ObjectId("5cc6b3219cb58ca2b005e66a"), "StudentId" : 102, "StudentSubject" : [ "C", "Java" ] }
{ "_id" : ObjectId("5cc6b3229cb58ca2b005e66b"), "StudentId" : 103, "StudentSubject" : [ "C", "MongoDB" ] }
Truy vấn đếm tần suất và lấy top 2 môn học phổ biến nhất:
> db.topCountArrayDemo.aggregate(
[
{ $unwind: "$StudentSubject" },
{ $group: { _id: "$StudentSubject", Frequency: {$sum: 1} } },
{ $sort: {Frequency:-1} },
{ $limit: 2 }
]
).pretty();
Kết quả:
{ "_id" : "C", "Frequency" : 3 }
{ "_id" : "MongoDB", "Frequency" : 2 }