у нас есть такие события:
{
"dateStart": "2018-04-04T08:50:42.389Z",
"machine": "Machine1",
"state": "Running"
},
{
"dateStart": "2018-04-04T09:10:00.389Z",
"machine": "Machine1",
"state": "Pause"
},
{
"dateStart": "2018-04-04T09:11:00.000Z",
"machine": "Machine1",
"state": "Running"
},
Что такое запрос MongoDB для расчета количества времени, в течение которого Machine1 находился в состоянии Running в определенный день / неделю / месяц?
это вообще возможно?
Поскольку мы находимся на этапе проектирования, мы открыты для предложений по модификации схемы JSON. Что здесь важно, так это возможность вычислить сумму продолжительности событий.

Вы можете найти разницу между двумя датами, используя $ вычесть и используя $ сумма из $ группа
Конвейер агрегации поставляется с большим количеством операторы трубопроводов, чтобы получить желаемый результат с помощью манипуляций, применяемых к нашим коллекциям.
Одна модификация, необходимая в вашем случае, - сохранить дату в формате ISODate как ISODate("2018-04-04T09:11:00.000Z"), чтобы вы могли использовать все арифметические операции, указанные в mongodb.
Machine1 was in state Running in a specific day/week/month?
Используйте $ матч в конвейере агрегации для фильтрации документов в вашей коллекции, которые соответствуют вашим критериям
db.collection_name.aggregate([{$match:{machine:"Machine1", state:"Running"}}])
Опубликуйте здесь то, что вы пробовали до сих пор?