У меня есть проекты коллекция:
{
_id: 1,
title: "Project 1"
},
{
_id: 2,
title: "Project 2"
}
и (время) записей коллекция:
{
_id: 90123,
project_id: 1,
task_id: 1,
hours: 3
},
{
_id: 90124,
project_id: 1,
task_id: 1,
hours: 5
},
{
_id: 90125,
project_id: 2,
task_id: 2,
hours: 1
},
{
_id: 90126,
project_id: 1,
task_id: 2,
hours: 2
}
Я бы нравится использовать агрегацию конвейера для:
- Получить записи для проекта 1
- Суммировать все записи для проекта 1 как "totalSpent"
- Группировать по task_id с суммированными часами за задачу
Примерно так: конечный результат:
{
totalSpent: 10,
spentByTask: {
{ task_id: 1, spent: 8 },
{ task_id: 2, spent: 2 }
}
}