聚合组多个结果
aggregate group multiple result
我尝试聚合操作“$group”..
我想得到多组结果。
我的数据是这样的..
items: [
{
director: "James",
category: "fruit",
name: "apple",
money: 5000
},
{
director: "James",
category: "toy",
name: "dragon",
money: 15000
},
{
director: "Sam",
category: "fruit",
name: "orange",
money: 3500
}
]
我要得到结果,这个!!
directorList:[
{
director: "James",
money: 20000
},
{
director: "Sam",
money: 3500
}
],
categoryList: [
{
category: "fruit",
money: 8500
},
{
category: "toy",
money: 15000
}
]
请回答..
谢谢..!!
您可以尝试以下聚合
db.collection.aggregate([
{ "$facet": {
"directorList": [
{ "$group": {
"_id": "$director",
"money": { "$sum": "$money" }
}},
{ "$project": {
"_id": false,
"director": "$_id",
"money": 1
}}
],
"categoryList": [
{ "$group:" {
"_id": "$category",
"money": { "$sum": "$money" }
}},
{ "$project": {
"_id": false,
"category": "$_id",
"money": 1
}}
]
}}
])
输出
[
{
"categoryList": [
{
"category": "toy",
"money": 15000
},
{
"category": "fruit",
"money": 8500
}
],
"directorList": [
{
"director": "Sam",
"money": 3500
},
{
"director": "James",
"money": 20000
}
]
}
]
我又遇到问题被屏蔽了..
items: [
{
mart_code : 1,
director: "James",
category: "fruit",
name: "apple",
money: 5000
},
{
mart_code: 1
director: "James",
category: "toy",
name: "dragon",
money: 15000
},
{
mart_code: 2,
director: "Sam",
category: "fruit",
name: "orange",
money: 3500
}
]
我想得到结果..
mart_code 添加..
martList: [ {
mart_code: 1,
directorList:[
{
director: "James",
money: 20000
}
],
categoryList: [
{
category: "fruit",
money: 5000
},
{
category: "toy",
money: 15000
}]
},
{
mart_code: 2,
directorList:[
{
director: "Sam",
money: 3500
}
],
categoryList: [
{
category: "fruit",
money: 3500
}]
}
]
我正在尝试 $facet、$group、$project...
有什么有效的方法吗?
我尝试聚合操作“$group”.. 我想得到多组结果。
我的数据是这样的..
items: [
{
director: "James",
category: "fruit",
name: "apple",
money: 5000
},
{
director: "James",
category: "toy",
name: "dragon",
money: 15000
},
{
director: "Sam",
category: "fruit",
name: "orange",
money: 3500
}
]
我要得到结果,这个!!
directorList:[
{
director: "James",
money: 20000
},
{
director: "Sam",
money: 3500
}
],
categoryList: [
{
category: "fruit",
money: 8500
},
{
category: "toy",
money: 15000
}
]
请回答.. 谢谢..!!
您可以尝试以下聚合
db.collection.aggregate([
{ "$facet": {
"directorList": [
{ "$group": {
"_id": "$director",
"money": { "$sum": "$money" }
}},
{ "$project": {
"_id": false,
"director": "$_id",
"money": 1
}}
],
"categoryList": [
{ "$group:" {
"_id": "$category",
"money": { "$sum": "$money" }
}},
{ "$project": {
"_id": false,
"category": "$_id",
"money": 1
}}
]
}}
])
输出
[
{
"categoryList": [
{
"category": "toy",
"money": 15000
},
{
"category": "fruit",
"money": 8500
}
],
"directorList": [
{
"director": "Sam",
"money": 3500
},
{
"director": "James",
"money": 20000
}
]
}
]
我又遇到问题被屏蔽了..
items: [
{
mart_code : 1,
director: "James",
category: "fruit",
name: "apple",
money: 5000
},
{
mart_code: 1
director: "James",
category: "toy",
name: "dragon",
money: 15000
},
{
mart_code: 2,
director: "Sam",
category: "fruit",
name: "orange",
money: 3500
}
]
我想得到结果.. mart_code 添加..
martList: [ {
mart_code: 1,
directorList:[
{
director: "James",
money: 20000
}
],
categoryList: [
{
category: "fruit",
money: 5000
},
{
category: "toy",
money: 15000
}]
},
{
mart_code: 2,
directorList:[
{
director: "Sam",
money: 3500
}
],
categoryList: [
{
category: "fruit",
money: 3500
}]
}
]
我正在尝试 $facet、$group、$project... 有什么有效的方法吗?