db.grades.aggregate([
  {
    $unwind: "$scores"
  },
  {
    $match: {
      "scores.type": {$ne: "quiz"}
    }
  },
  {
    $group: {
      _id: {
        class_id: "$class_id",
        student_id: "$student_id"
      },
      avg_student: {$avg: "$scores.score"}
    }
  },
  {
    $group: {
      _id: "$_id.class_id",
      avg_class: {$avg: "$avg_student"}
    }
  },
  {
    $sort: {avg_class: -1}
  }
]);