De $redact
fase begint bij het hoofddocument en zijn velden, en alleen wanneer dat document voldoet aan de voorwaarde om $$DESCEND
, het onderzoekt de subdocumenten die in dat document zijn opgenomen. Dat betekent dat het eerste wat $redact met uw document doet, dit is:
{
"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"student_id" : 0,
"class_id" : 2,
"scores" : [] // Some array. I will look at this later.
}
Het vindt niet eens een type
veld hier, dus $eq: [ "$type" , "exam" ]
is fout. Wat heb je $redact gezegd om te doen als de voorwaarde onwaar is? else: "$$PRUNE"
, dus het hele document wordt gesnoeid voordat de subdocumenten worden onderzocht.
Test als tijdelijke oplossing of $type
is ofwel "exam"
of bestaat niet. Je hebt niet expliciet om een werkende oplossing gevraagd, dus ik zal het als een oefening aan jou overlaten om erachter te komen hoe je dit kunt doen.