В MongoDB у меня есть документы, подобные приведенным ниже (я вычеркиваю названия вызовов для конфиденциальности):
Теперь мне нужно создать запрос для возвращать результаты, сгруппированные по имени звонка, и для каждого типа звонка мне нужно получить количество звонков по месяцам, дням и часам. Кроме того, в этом запросе мне нужно указать диапазон между двумя датами (включая время).
На сервере SQL это делается с помощью оконных функций (разделов) в сочетании с агрегатами, но как я могу сделать то же самое in Mon go?
Я использую компас MongoDB в качестве клиента mon go.
Мне нужно получить что-то, как показано ниже:
call name month day hour #ByMonth #ByDay #ByHour
GetEmployee January 1 14 10 6 1
GetEnployee January 1 18 10 6 5
GetEmployee January 3 12 10 4 4
GetEmployee March 5 20 8 8 8
GetEmployee April 12 17 45 35 35
GetEmployee April 20 10 45 10 10
Например, для звонков GetEmployee распределение выглядит следующим образом:
- 10 звонков в январе
- 8 звонков в марте
- 45 звонков в апреле
На январь 10 звонков распределяются следующим образом:
- 6 звонков сделано 1 января (эти 6 звонков распределяются следующим образом: 1 звонок в 14 часов и 5 звонков в 18 часов )
- 4 звонка совершены 3 января (все эти 4 звонка сделаны в 12 часов)
и так далее до конца месяцев.
Например, на SQL сервере, если у меня есть таблица ниже:
processName initDateTime
processA 2020-06-15 13:31:15.330
processB 2020-06-20 10:00:30.000
processA 2020-06-20 13:31:15.330
...
and so on
Запрос SQL:
select
processName,
month(initDateTime),
day(initDateTime),
datepart(hour, initDateTime),
sum(count(*)) over(partition by processName, year(initDateTime), month(initDateTime)) byMonth,
sum(count(*)) over(partition by processName, year(initDateTime), month(initDateTime), day(initDateTime)) byDay,
count(*) byHour
from mytable
group by
processName,
year(initDateTime),
month(initDateTime),
day(initDateTime),
datepart(hour, initDateTime)
Итак, H как сделать то же самое в пн go? вышеуказанные поля processName и initDateTime будут атрибутами call и created соответственно в mongodb.