Графики MongoDB - график кумулятивного роста с несколькими атрибутами группы? - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь расширить ответ, представленный в Диаграммы 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**
...