Скользящие средние с использованием структуры агрегации MongoDB

Учитывая, что у вас есть коллекция документов со свойством даты или периода (2013-01), как лучше всего вычислить статистику скользящего среднего (скажем, 3 м в среднем) с использованием структуры агрегации MongoDB?


person Fredrik Grundberg    schedule 12.01.2013    source источник


Ответы (1)


Лучше всего запускать всю агрегацию с разумным интервалом и пересчитывать весь набор. Если вы рассчитываете среднее значение за 3 месяца, настройте cronjob для запуска каждую ночь и рассчитайте среднее значение.

var minus3Months = new Date();
minus3Months.setMonth(now.getMonth()-3);
db.myCollection.aggreage([
    {"$match": {"createdAt": {"$gte": minus3Months}}},
    ......
])
person Benjamin    schedule 17.04.2013
comment
Как бы вы поступили с историческими данными? Программно установить временные рамки с несколькими агрегированными запросами с интервалом в 3 месяца, скажем, на 50 лет? Есть ли способ сделать это с помощью одного запроса? - person mc.; 06.08.2014