MongoDB - Расчет среднего числа элементов массива по всей коллекции - PullRequest
0 голосов
/ 14 мая 2019

У меня есть коллекция документов, похожая на эту:

{ student_id : 13,
     courses : [
          { name : "Topology" , grade : 9 }, 
           { name : "Calculus", grade : 10}
          ]}
 },

{ student_id : 45,
     courses : [
          { name : "Geology" , grade : 7 }, 
           { name : "Architecture", grade : 8}
          ]}
 }

Теперь, скажем, я хотел бы рассчитать среднее значение всех единичных оценок по всем учащимся (так что, если выше - вся коллекциямы бы посчитали в среднем 9,10,7 и 8)

Я пытаюсь сделать это, используя aggregate().Я понимаю, что мне нужно начать с $unwind в массиве, но я не понимаю, как двигаться дальше.

спасибо.

1 Ответ

0 голосов
/ 15 мая 2019

Вот ответ @Anthony Winzlet в комментарии:

db.collection.aggregate([
  {
    $unwind: "$courses"
  },
  {
    $group: {
      _id: null,
      average: {
        $avg: "$courses.grade"
      }
    }
  }
])

Спасибо @Anthony Winzlet

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