$redact
stadiet starter ved roddokumentet og dets felter, og kun når dette dokument opfylder betingelsen om $$DESCEND
, undersøger den underdokumenterne i det pågældende dokument. Det betyder, at den første ting $redact gør med dit dokument er at undersøge dette:
{
"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"student_id" : 0,
"class_id" : 2,
"scores" : [] // Some array. I will look at this later.
}
Den finder ikke engang en type
felt her, så $eq: [ "$type" , "exam" ]
er falsk. Hvad har du bedt $redact om at gøre, når betingelsen er falsk? else: "$$PRUNE"
, så hele dokumentet beskæres inden underdokumenterne undersøges.
Som en løsning kan du teste om $type
er enten "exam"
eller eksisterer ikke. Du bad ikke eksplicit om en fungerende løsning, så jeg vil overlade det som en øvelse til dig for at finde ud af, hvordan du gør dette.