Как подсчитать средний рейтинг как в mongoDB, только на чистом js?

У меня есть пост:

post: {
  title: "Future devops", 
  avgrating: 5, 
  ratingOne: 4
  ratingTwo: 4 
  ratingThree: 4       
  ratingFour: 5 
  ratingFive: 4
}

И комментарии к нему

commentsPost: [
  {
  name: "Dima", 
  ratingOne: 3,
  ratingTwo: 2,
  ratingThree: 2,      
  ratingFour: 5,
  ratingFive: 2
  },
  {
  name: "Dima", 
  ratingOne: 3,
  ratingTwo: 2,
  ratingThree: 2,      
  ratingFour: 5,
  ratingFive: 2
  },
  {
  name: "Dima", 
  ratingOne: 3,
  ratingTwo: 2,
  ratingThree: 2,      
  ratingFour: 5,
  ratingFive: 2
  },
  {
  name: "Dima", 
  ratingOne: 3,
  ratingTwo: 2,
  ratingThree: 2,      
  ratingFour: 5,
  ratingFive: 2
  },
  {
  name: "Dima", 
  ratingOne: 3,
  ratingTwo: 2,
  ratingThree: 2,      
  ratingFour: 5,
  ratingFive: 2
  },
 ]

Максимальная оценка параметра - 5 баллов.

Я хочу посчитать средний рейтинг для каждого поля рейтинга Поста на основе общего количества комментариев и их рейтингов.

Тоесть, каждое поле Поста (ratingOne, ratingTwo, ratingThree, ratingFour, ratingFive) имеет среднее значение по количеству комментариев. А поле avgrating поста имеет среднюю оценку на основе остальных полей рейтинга Поста (ratingOne и т.д.).

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

Чешу голову, но не могу придумать как лучше реализовать. В mongoose есть параметр для этого и там все делается в пару строк, но мне нужно реализовать это на чистом js, так как использую graphcms, а там нет такой возможности как aggregate - avg, только count.


Ответы (0 шт):