여러 결과를 집계하려면 MongoDB에서 $group을 사용합니다. 문서로 컬렉션을 만들자 −
> 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"
}
]
}