Телематические блоки машин партнёров присылают события: запуск двигателя, резкое торможение, вызов SOS. Машины ездят в разных городах, и блок пишет время в своём поясе.
В events время ts — строка ISO 8601 со смещением блока: -05:00 у машин из Чикаго, Z, у машин из Токио +09:00. Для графика нагрузки посчитайте события каждой машины (vin) по часам UTC.
Час верните строкой вида 2026-04-03T13:00:00Z. Поля ответа: vin, hour, events; порядок — по vin, затем по hour.
В работе: Метрики по часам и дням, когда источники пишут время в разных зонах: телематика, логи мобильных приложений.
MongoDB · MongoDB 8.0.20
Коллекции
events — одно событие с машины
| Поле | Тип | Что значит |
|---|---|---|
vin | string | VIN машины |
event | string | тип события |
ts | string | ISO 8601 со смещением зоны |
Пример: документы
events
[
{
"ts": "2026-04-03T08:15:00-05:00",
"vin": "JTMBF4DV5R0012345",
"event": "door_unlock"
},
{
"ts": "2026-04-03T08:45:00-05:00",
"vin": "JTMBF4DV5R0012345",
"event": "engine_start"
},
{
"ts": "2026-04-03T09:05:00-05:00",
"vin": "JTMBF4DV5R0012345",
"event": "harsh_brake"
},
{
"ts": "2026-04-03T13:20:00Z",
"vin": "5TDGZRBH1RS000777",
"event": "engine_start"
}
]
Ожидаемый ответ
[
{
"vin": "5TDGZRBH1RS000777",
"hour": "2026-04-03T13:00:00Z",
"events": 1
},
{
"vin": "JTMBF4DV5R0012345",
"hour": "2026-04-03T13:00:00Z",
"events": 2
},
{
"vin": "JTMBF4DV5R0012345",
"hour": "2026-04-03T14:00:00Z",
"events": 1
}
]
db.коллекция.aggregate([...]). Выполняем его в браузере движком агрегаций на 4 наборах документов: пример выше и скрытые — с пропущенными полями, null и пустыми коллекциями. Порядок документов важен, порядок полей внутри документа — нет. $out и $merge запрещены.
{"collection": "events", "pipeline": [ … ]}
Источник: на данных сервиса поездок: телеметрия машин. Условие пересказано своими словами.
Посмотреть данные, проверить часть pipeline. На зачёт не влияет.
Здесь появится результат отправки.