Tak, możesz to zrobić w bazie danych, jeśli używasz Kolekcja kalendarzy czyli zbiór pomocniczy, który jest tylko listą dat , bez przerw. Korzystając z takiej kolekcji kalendarzy, możesz stworzyć agregację, która:
- Używa operator $lookup aby dołączyć kolekcję kalendarza do swojej kolekcji codziennych rekordów
- Przekształca dane (za pomocą $unwind , $group i $project w razie potrzeby) do konwersji połączonych danych (tablicy poddokumentów) do pożądanej struktury
- Używa operator ifnull na $projektu aby upewnić się, że pole numItems ma domyślną wartość 0 w dokumentach, w których jeszcze nie istnieje