Войти Регистрация
Data base

125. События телематики по часам UTC

Сложная

Телематические блоки машин партнёров присылают события: запуск двигателя, резкое торможение, вызов 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 — одно событие с машины

ПолеТипЧто значит
vinstringVIN машины
eventstringтип события
tsstringISO 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
 }
]
Как проверяем Запрос — JSON: имя коллекции и стадии aggregate, как в db.коллекция.aggregate([...]). Выполняем его в браузере движком агрегаций на 4 наборах документов: пример выше и скрытые — с пропущенными полями, null и пустыми коллекциями. Порядок документов важен, порядок полей внутри документа — нет. $out и $merge запрещены.
{"collection": "events", "pipeline": [ … ]}
$dateFromString$dateTrunc$dateToStringчасовые пояса$group

Источник: на данных сервиса поездок: телеметрия машин. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.