У меня есть следующие json данные:
{ "_id" : { "Soid" : "50b59cd75bed76f46522c36a" }, "student_id" : 4, "class_id" : 5, "scores" : [ { "type" : "exam", "score" : 5.466727688497352 }, { "type" : "quiz", "score" : 48.70365097712529 }, { "type" : "homework", "score" : 84.00121183981668 }, { "type" : "homework", "score" : 67.53163246780703 }, { "type" : "homework", "score" : 66.19091789853015 } ] },
{ "_id" : { "Soid" : "50b59cd75bed76f46522c354" }, "student_id" : 0, "class_id" : 7, "scores" : [ { "type" : "exam", "score" : 18.20492211025179 }, { "type" : "quiz", "score" : 60.4769945611789 }, { "type" : "homework", "score" : 75.62999921143397 }, { "type" : "homework", "score" : 72.41228797373115 }, { "type" : "homework", "score" : 74.06744381708968 } ] },
{ "_id" : { "Soid" : "50b59cd75bed76f46522c358" }, "student_id" : 0, "class_id" : 10, "scores" : [ { "type" : "exam", "score" : 30.93065784731665 }, { "type" : "quiz", "score" : 55.98003281528393 }, { "type" : "homework", "score" : 55.6752702814148 }, { "type" : "homework", "score" : 63.15391302252755 } ] },
, и я хочу узнать максимальное количество баллов, полученных за каждый тип экзамена, например «экзамен», «викторина» и «домашнее задание».
Я знаю, что могу использовать mongos aggregate (), и я знаю, как получить максимум, например:
db.grades.aggregate(
[
{
$group:
{
_id: "Soid",
{$scores: maxQuantity: { $max: "$score" }}
}
}
]
)
Но как мне добраться до вложенных частей и определить там максимум? Я пытался использовать функцию размотки, но не знаю точного синтаксиса.