@Devero97

Как подсчитать средний рейтинг как в 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.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы