Как запросить среднее значение полей для каждых пяти документов? - PullRequest
0 голосов
/ 13 июня 2019

Я новичок в mongoDB, у меня есть простая структура документов в MongoDB, как показано (но есть миллионы документов с разными значениями).Здесь timestamp в формате Unix и генерируется каждые 1 минуту. Например, в течение 5 минут в коллекции будет 5 разных документов с разной отметкой времени,

{
  a:12,
  b:52,
  c:15,
  timestamp: 15603418700
} 
{
  a:22,
  b:21,
  c:14,
  timestamp: 15603418760
} 
{
  a:9,
  b:23,
  c:32,
  timestamp: 15603418820
} 

Теперь я хочу запросить среднее значениекаждый a, b и c за каждые 5 минут или скажем 5 документов.То есть мне нужно вывести что-то вроде

{
  Avg_of_A : [15.3, 16.6, 16.4],
  Avg_of_B : [20.3, 21.4, 23.0],
  Avg_of_C : [18.9, 17.5, 15.6],
}

Здесь 15.3 - это среднее значение a для первых 5 документов, а 16.6 - среднее значение a для следующих 5 документов.и так далее ...

Примечание: 1. Это просто фиктивный вывод, мне просто нужен вывод в таком формате, чтобы я мог печатать данные в среднем за каждые 5 минут (документы)

1 Ответ

1 голос
/ 13 июня 2019

То, что вы ищете, называется «скользящая средняя». Скользящие средние с инфраструктурой агрегирования MongoDB? предлагает решение в MongoDB.

Базы данных SQL с функциональностью Window могут сделать это более элегантным способом: https://www.essentialsql.com/sql-puzzle-calculate-moving-averages/

...