Состояние агрегации MongoDb на основе элементов в массиве - PullRequest
1 голос
/ 24 июня 2019

Ниже приведена структура моего документа:

{
   _id:1,
   testId:3,
   marksObtained:10,
   subjects:[
     {
        subjectId:1,
        marksObtained:6
     },
     {
        subjectId:2,
        marksObtained:4
     }
   ]
}

Теперь мне нужно рассчитать количество студентов, набравших больше баллов по каждому предмету, и обновить его в документе. Я могу сделать это на уровне теста, но не могу понять, как это сделать на уровне элемента массива.

Итак, допустим, что есть один ученик с более высоким баллом по предмету 1 и 2 ученик с более высоким баллом по предмету, мне нужно изменить документ так, чтобы он выглядел следующим образом:

{
   _id:1,
   testId:3,
   marksObtained:10,
   subjects:[
     {
        subjectId:1,
        marksObtained:6,
        rank:2
     },
     {
        subjectId:2,
        marksObtained:4,
        rank:3
     }
   ]
}
...