Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

중복 ID가 있는 총 점수를 계산하기 위해 여러 열로 MongoDB 그룹화

<시간/>

이를 위해 $group과 함께 집계()를 사용합니다. 문서로 컬렉션을 만들자 −

> db.demo627.insertOne({id:101,"Name":"Chris","Marks":54});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9acb306c954c74be91e6b2")
}
> db.demo627.insertOne({id:102,"Name":"Bob","Marks":74});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9acb3c6c954c74be91e6b3")
}
> db.demo627.insertOne({id:101,"Name":"Chris","Marks":87});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9acb426c954c74be91e6b4")
}
> db.demo627.insertOne({id:102,"Name":"Mike","Marks":70});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9acb4b6c954c74be91e6b5")
}

find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -

> db.demo627.find();

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" : ObjectId("5e9acb306c954c74be91e6b2"), "id" : 101, "Name" : "Chris", "Marks" : 54 }
{ "_id" : ObjectId("5e9acb3c6c954c74be91e6b3"), "id" : 102, "Name" : "Bob", "Marks" : 74 }
{ "_id" : ObjectId("5e9acb426c954c74be91e6b4"), "id" : 101, "Name" : "Chris", "Marks" : 87 }
{ "_id" : ObjectId("5e9acb4b6c954c74be91e6b5"), "id" : 102, "Name" : "Mike", "Marks" : 70 }

다음은 중복 ID가 있는 총 점수를 계산하기 위해 여러 열로 MongoDB 그룹을 합산하는 쿼리입니다. -

> db.demo627.aggregate([
...    { "$group": {
...       "_id": {
...          "id" : "$id",
..         . "Name":"$Name"
...       },
...       "Marks": { "$sum": "$Marks" }
...    }},
...    { "$group": {
...       "_id": {
...          "id" : "$_id.id",
...          "Name": "$_id.Name"
...       },
...
...       "TotalMarks": { "$sum": "$Marks" }
...    }}
... ], { "allowDiskUse": true }
... );

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" : { "id" : 101, "Name" : "Chris" }, "TotalMarks" : 141 }
{ "_id" : { "id" : 102, "Name" : "Bob" }, "TotalMarks" : 74 }
{ "_id" : { "id" : 102, "Name" : "Mike" }, "TotalMarks" : 70 }