Всем привет. в монге относительно новичок, посему такой вопрос: как

можно аггрегировать данные по определенным временным интервалам, к-ые начинаются с сего дня ?

условно, есть 4 вида группировки
- неделя
- месяц
- год
- все время

везде группировка не по календарному дню / месяцу / году, а начиная с текущего дня (включительно). и вот стоит задача разбить данные в каждом типе группировки на равные интервалы

для недели — по дню (7 дней от текущего)
для месяца — по неделе (4 недели с текущего дня)
для года — по месяцу (12 месяцев с текущего дня)
для N лет — по году с текущего дня

данные вида
{id, date, ...otherFields}

вопрос заключается в том, как в aggregation пайплайне нарезать данные на такие вот кастомные слайсы, саму агрегацию я как-нить сам докручу. спасибо всем, кто откликнется )

19 ответов

7 просмотров

используйте сорт по дате

Arthur Irgashev
зачем ?

либо 2 вариант обычный find с $gte

Arthur-Irgashev Автор вопроса
Vladyslav Hrehul
либо 2 вариант обычный find с $gte

вопрос не в поиске данных в диапазоне, а группировке данных внутри диапазона по неделе / месяцу / году-ам от текущей даты юзера. кажется, вариант с оффсетом должен помочь, попробую проверить, как дойду до компа

Есть операторы, $lt,$lte,$gt,$gte. Используй их для поиска промежтоков между датами

Arthur Irgashev
вопрос не в поиске данных в диапазоне, а группиров...

вот как раз ваши "для .." и делаются обычным find + gte, lte

Arthur-Irgashev Автор вопроса
Vladyslav Hrehul
вот как раз ваши "для .." и делаются обычным find ...

кажется, я плохо сформулировал задачу ) есть сиквенс данных формата [{id, date, ...}, {id, date, ...}, {id, date, ...}] нужно 1) фильтрануть данные по нужному мне интервалу (это очевидно, как сделать, как раз через find + lte / gte) 2) по отфильтрованным данным сделать группировку и агрегацию по промежуткам. условно, groupBy isoWeek, но мне нужен не isoWeek / month/ etc, а текущая дата юзера. т.е. isoWeek нарежет мне данные за месяц на 4 недели календарные, с понедельника по воскресенье. мне же нужно нарезать с текущего дня + 7 дней назад. например, сегодня среда, значит мне нужно нарезать данные начиная со среды - 7 дней, потом среды - 14, среды - 21 и тд

Arthur Irgashev
кажется, я плохо сформулировал задачу ) есть сикв...

сложно понять ваше "групировка", мне кажется это не то, что имеется ввиду. группировка, это - показать сколько раз встерачется id и тд. Ваша ж формулировка - чисто "разбитие" по рейнджу дат - не вижу самой группировки - по чем она должна быть или вам она вовсе и ненужна?

Arthur-Irgashev Автор вопроса
Vladyslav Hrehul
сложно понять ваше "групировка", мне кажется это н...

мне дальше нужно будет агрегировать вот эти нарезанные слайсы и показывать сумму / avg значений из этого слайса т.е. если я выбираю - недельный слайс, то нужно показать агрегацию значений за 7 дней начиная с текущего (на графике должно быть 7 баров) - месячный слайс, то нужно показывать агрегацию значений за неделю, начиная с текущего дня (на графике должно быть 4 бара) - годовой - значение за месяц (у нас усредненно 28 дней) начиная с текущего дня, на графике 12 баров

Arthur Irgashev
мне дальше нужно будет агрегировать вот эти нареза...

вот тут совсем другой разговор) Гляньте примеры: https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/

Arthur Irgashev
да

лучше как 4 отдельных запроса пускать

Arthur Irgashev
мне дальше нужно будет агрегировать вот эти нареза...

я бы вывод обрабатывал в приложении, а не пытался делать оверхард через СУБД, которая не для этого предназначена

Alexandrr
я бы вывод обрабатывал в приложении, а не пытался ...

групировка - это обычная задача бд, какой оверхед?

Vladyslav Hrehul
групировка - это обычная задача бд, какой оверхед?

группировка - это поиск по заданному условию, а не обработка и форматирование выводного результата

Alexandrr
группировка - это поиск по заданному условию, а не...

задайте себе вопрос: зачем вытаскивть всю бд, грузить ее на бек, чтобы сделать групировку, которая просто вернет avg. Когда тоже самое может сделать бд, быстрее и получить сразу готовый результат

Vladyslav Hrehul
задайте себе вопрос: зачем вытаскивть всю бд, груз...

какую всю бд? я написал такое? где? сделать 4 операции внутри с возможностью упереться в bson, о котором выше написали идея для слабой реализации с критическими точками и низкой отказоустойчивостью а вот вывести 4 нужных участка и разложить как нужно, переформатировать, это другое

Похожие вопросы

Обсуждают сегодня

Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Добрый день. Созданию отношения таблиц для учёта кораблей, их движения между точками (портами) согласно расписания. Терзают сомнения в правильном ли направлении двигаюсь 😅 1...
Aleksey
1
господа, когда у вас в боте есть локализация (ру + англ, остальные языки пока не планируются), вы на первом старте как с языком решаете вопрос: смотрите на language_code приле...
Denis 🐍|👑 | darling! 🥰
5
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
I have financial chart like this I can mask by color to get green and red squares. I want get two data First i want to get two last squares(two in the very right side colors) ...
@. .@
4
Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
Привет. Наверняка у кого-нибудь здесь есть опыт работы с трекерами (встроенными в OpenCV (KCF) или абстрагированными) на одноплатниках. Если не рассматривать малинку и други...
Georgy Makarov
4
Приветствую. Есть N видео объектов (фильмы). Часть полной длины просмотра а часть короткие ( обрезаны титры). Задача найти идентичные фильмы. Я не в курсе, есть ли аналог шаз...
Nikolay Chudinov
7
Карта сайта