Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Duy trì số lượng đếm top các phần tử mảng trong MongoDB?

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 }