MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Redact in mongodb mi sembra oscuro

Il $redact la fase inizia dal documento radice e dai suoi campi, e solo quando quel documento soddisfa la condizione di $$DESCEND , esamina i sottodocumenti inclusi in tale documento. Ciò significa che la prima cosa che $redact fa con il tuo documento è esaminare questo:

{
    "_id" : ObjectId("50b59cd75bed76f46522c34e"),
    "student_id" : 0,
    "class_id" : 2,
    "scores" : [] // Some array. I will look at this later.
}

Non trova nemmeno un type campo qui, quindi $eq: [ "$type" , "exam" ] è falso. Cosa hai detto a $redact di fare quando la condizione è falsa? else: "$$PRUNE" , quindi l'intero documento viene eliminato prima che i documenti secondari vengano esaminati.

Come soluzione alternativa, verifica se $type è "exam" o non esiste. Non hai chiesto esplicitamente una soluzione funzionante, quindi lascerò a te il compito di capire come farlo.