Предположим, у меня есть:
[
{ProjectId: "1", PriceSold: 100, Item: {Name: "Package1", Specs: ["A", "B"]} } ,
{ProjectId: "2", PriceSold: 500, Item: {Name: "Package10", Specs: ["A", "C"]} } ,
{ProjectId: "3", PriceSold: 900, Item: {Name: "Package100", Specs: ["D", "E"]} } ,
{ProjectId: "4", PriceSold: 50, Item: {Name: "Package90", Specs: ["F"]} } ,
]
Я хотел бы сделать спецификации GroupBy, но суммировать родительский PriceSold.Результат будет:
[
{Spec: "A", Total: 600},
{Spec: "B", Total: 100},
{Spec: "C", Total: 500},
{Spec: "D", Total: 900},
{Spec: "E", Total: 900},
{Spec: "F", Total: 50},
]
Любая попытка агрегации возвращает мне группы спецификаций, а не элемент, и сумма не работает.Первая попытка:
db.ClientProject.aggregate([
{ "$group" : { "_id" : "$Item.Specs", "__agg0" : { "$sum" : "$PriceSold" } } },
{ "$project" : { "GroupId" : "$_id", "GroupSum" : "$__agg0", "_id" : 0 } }
])
Вторая попытка (она считается правильно, но я не могу сделать сумму PriceSold)
db.ClientProject.aggregate([
{ "$unwind" : "$Item.Specs" },
{ "$project" : { "Specs" : "$Item.Specs", "_id" : 0 } },
{ "$group" : { "_id" : "$Specs", "__agg0" : { "$sum" : 1 } } },
{ "$project" : { "GroupId" : "$_id", "GroupSum" : "$__agg0", "_id" : 0 } }])