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

MongoDB รวมกลุ่มหลายผลลัพธ์?


หากต้องการรวมผลลัพธ์หลายรายการ ให้ใช้ $group ใน MongoDB ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo765.insertOne(
...
...    {
...       Name:"John",
...       "Category":"ComputerScience",
...       "SubjectName":"MongoDB",
...       "Marks":75
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb054525637cd592b2a4b01")
}
>
> db.demo765.insertOne(
...    {
...       Name:"John",
...       "Category":"ComputerScience",
...       "SubjectName":"MySQL",
...       "Marks":85
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb054525637cd592b2a4b02")
}
> db.demo765.insertOne(
...    {
...       Name:"Chris",
...       "Category":"10th",
...       "SubjectName":"Math",
...       "Marks":98
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb054535637cd592b2a4b03")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo765.find();

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

{ "_id" : ObjectId("5eb054525637cd592b2a4b01"), "Name" : "John", "Category" : "ComputerScience", "SubjectName" : "MongoDB", "Marks" : 75 }
{ "_id" : ObjectId("5eb054525637cd592b2a4b02"), "Name" : "John", "Category" : "ComputerScience", "SubjectName" : "MySQL", "Marks" : 85 }
{ "_id" : ObjectId("5eb054535637cd592b2a4b03"), "Name" : "Chris", "Category" : "10th", "SubjectName" : "Math", "Marks" : 98 }

ต่อไปนี้เป็นแบบสอบถามเพื่อรวมกลุ่มหลายผลลัพธ์ -

> db.demo765.aggregate([
...    { "$facet": {
...       "ListOfName": [
...          { "$group": {
...             "_id": "$Name",
...             "Marks": { "$sum": "$Marks" }
...          }},
...          { "$project": {
...             "_id": false,
...             "Name": "$_id",
...             "Marks": 1
...          }}
...       ],
...       "ListOfCategory": [
...          { "$group": {
...             "_id": "$Category",
...             "Marks": { "$sum": "$Marks" }
...          }},
...          { "$project": {
...             "_id": false,
...             "Category": "$_id",
...             "Marks": 1
...          }}
...       ]
...    }}
... ]).pretty()

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

{
   "ListOfName" : [
      {
         "Marks" : 98,
         "Name" : "Chris"
      },
      {
         "Marks" : 160,
         "Name" : "John"
      }
   ],
   "ListOfCategory" : [
      {
         "Marks" : 98,
         "Category" : "10th"
      },
      {
         "Marks" : 160,
         "Category" : "ComputerScience"
      }
   ]
}