Получение средних значений за день в MongoDB с использованием Moongose - PullRequest
0 голосов
/ 16 мая 2018

Мне нужно получить данные из mongoDB, и я использую moongose.Элементы (документы) в коллекции просты:

{"created_at":"2018-05-16T15:58:24.979Z","_id":"5afc5520b237951510da6a0c","value":15.5,"__v":0}

Мне нужно получить среднее значение «значений» за каждый день, начиная с сегодняшнего дня, на предыдущей неделе, например:

сегодня: понедельник

Я хочу такой массив [1,2,3,4,5,6,7,8] где:

LastСреднее значение за понедельник = 1

Среднее значение за вторник = 2

....

Среднее значение за сегодня = 8

Есть ли способ сделать это непосредственно вмангуст

1 Ответ

0 голосов
/ 22 мая 2018

Вы должны сделать агрегацию, которая включает в себя следующие шаги:

  1. Разбейте поле created_at, чтобы получить день месяца, месяц и год отдельно,
  2. Получите среднее значение value каждого дня.

Это код:

YourCollection.aggregate([
{
   $project:
     {
       year: { $year: "$created_at" },
       month: { $month: "$created_at" },
       day: { $dayOfMonth: "$created_at" },
       _id: "$id",
       value: "$value"
     }
},
{
   $group:
     {
       year: "$year",
       month: "$month",
           day: "$day",
           avgValue: { $avg: "$value" } 
         }
    }
]);
...