Я пытаюсь расширить ответ, представленный в Диаграммы MongoDB - кумулятивный рост диаграммы? для группировки по нескольким атрибутам.
В основном, если данные имеют дату и тип A, B и C. Я хочу получить кумулятивные итоги всех А, кумулятивные итоги всех В и кумулятивные итоги всех C. Я знаю, что мог бы сделать это в отдельных графиках, но было бы неплохо создать один конвейер с большим количеством измерений атрибутов. Первые несколько частей конвейера я вижу, что делать, но мне нужна помощь с разделом карты, чтобы суммировать записи по типу, а не все до этой даты. Вот код на данный момент ....
[
{ $addFields: { "date": { $dateToString: { format: "%Y-%m-%d", date: { $toDate: "$_id" }} }
, "document_type": "$document_type" }},
{ $group: { _id: {"date":"$date", "document_type": "$document_type"}, count: { $sum: 1 } } },
{ $sort: { _id: 1 } },
{ $group: { _id: null, days: { $push: "$_id" }, counts: { $push: "$count" } } },
{ $project: {
days: {
$map: {
input: { $range: [ 0, { $size: "$days" } ] },
in: { _id: { $arrayElemAt: [ "$days", "$$this" ] }, cumGrowth: { $sum: { $slice: [ "$counts", 0, { $add: [ "$$this", 1 ] } ] } } }
}
}
}
},
{ $unwind: "$days" },
{ $replaceRoot: { newRoot: "$days" } },
{ $sort: { _id: 1 } },
]
Может кто-нибудь помочь подсчитать правильные совокупные итоги в разделе карты?
Текущий код для этих данных:
Date 1-1-20, document_type = A
Date 1-1-20, document_type = B
Date 1-1-20, document_type = C
Date 1-1-20, document_type = A
Date 2-1-20, document_type = A
Date 2-1-20, document_type = B
Date 2-1-20, document_type = B
дает
date 1-1-20 type A count 2
date 1-1-20 type B count 1
date 1-1-20 type C count 1
date 2-1-20 type A count **5** <-- should be 3 but includes the B's and C's from 1-1-20
date 2-1-20 type B count **6**
Date 2-1-20, type C count **4**