$redact
etap rozpoczyna się od dokumentu głównego i jego pól i tylko wtedy, gdy ten dokument spełnia warunek $$DESCEND
, bada poddokumenty zawarte w tym dokumencie. Oznacza to, że pierwszą rzeczą, jaką $redact robi z twoim dokumentem, jest sprawdzenie tego:
{
"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"student_id" : 0,
"class_id" : 2,
"scores" : [] // Some array. I will look at this later.
}
Nie znajduje nawet type
pole tutaj, więc $eq: [ "$type" , "exam" ]
to fałsz. Co kazałeś $redact zrobić, gdy warunek jest fałszywy? else: "$$PRUNE"
, więc cały dokument jest przycinany przed sprawdzeniem poddokumentów.
Jako obejście sprawdź, czy $type
jest albo "exam"
lub nie istnieje. Nie prosiłeś wyraźnie o działające rozwiązanie, więc pozostawię to jako ćwiczenie, aby dowiedzieć się, jak to zrobić.