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

У меня есть REST-сервер, который подключен к mongoDB. В моей БД есть коллекция с кучей тестов в такой форме:

{
  name: 'xxx',
  date: 'xxx',
  props: [
    {
      role: 1,
      commands: [
        {
          command: 'xxx',
          data: [
            {
              timestamp: 'xxx',
              cpu: 1,
              ram: 5
            },
            {
              timestamp: 'xxy',
              cpu: 2,
              ram: 3
            }
          ]
        }
      ]
    }
  ]
}

Коллекция огромна или, по крайней мере, потенциально может быть.

Props - может содержать до 3 объектов

Props.commands - может содержать до 30 объектов

Props.commands.data - может содержать до 20 объектов

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

Я пытался использовать вложенный $unwind's для одного документа, который уже занимал огромное время обработки, что имеет смысл, учитывая объем данных. Мне интересно, было бы разумнее просто хранить средние значения для каждого уровня при добавлении документов в коллекцию вместо их вычисления после использования функции агрегирования MongoDB.

Конечной целью будет фильтрация данных с использованием $match, а затем агрегирование процессора и оперативной памяти на основе этого с самым быстрым из возможных методов.

Я довольно новичок в Mongo и поэтому имею очень ограниченный опыт работы с конвейером и возможностями агрегации, поэтому любые советы будут приветствоваться.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...