mongodb 分组聚合_MongoDB聚合分组多个结果

要聚合多个结果,请在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"

}

]

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值