Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

จะรักษาจำนวนองค์ประกอบอาร์เรย์ใน MongoDB ได้อย่างไร?


คุณสามารถใช้กรอบงานรวม ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> 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")
}

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> db.topCountArrayDemo.find().pretty();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{
   "_id" : ObjectId("5cc6b3209cb58ca2b005e669"),
   "StudentId" : 101,
   "StudentSubject" : [
      "C",
      "MongoDB"
   ]
}
{
   "_id" : ObjectId("5cc6b3219cb58ca2b005e66a"),
   "StudentId" : 102,
   "StudentSubject" : [
      "C",
      "Java"
   ]
}
{
   "_id" : ObjectId("5cc6b3229cb58ca2b005e66b"),
   "StudentId" : 103,
   "StudentSubject" : [
      "C",
      "MongoDB"
   ]
}

ต่อไปนี้เป็นแบบสอบถามเพื่อรักษาจำนวนองค์ประกอบอาร์เรย์ใน MongoDB -

> db.topCountArrayDemo.aggregate(
...    [
...       {
...          $unwind: "$StudentSubject"
...       },
...       {
...          $group: {
...             _id: "$StudentSubject",
...             Frequency: {$sum: 1}
...          }
...       },
...       {
...          $sort: {Frequency:-1}
...       },
...       {
...          $limit: 2
...       }
...    ]
... ).pretty();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : "C", "Frequency" : 3 }
{ "_id" : "MongoDB", "Frequency" : 2 }