sql >> Base de Datos >  >> NoSQL >> MongoDB

Redactar en mongodb me parece oscuro

El $redact la etapa comienza en el documento raíz y sus campos, y solo cuando ese documento cumple la condición para $$DESCEND , examina los subdocumentos incluidos en dicho documento. Eso significa que lo primero que hace $redact con su documento es examinar esto:

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

Ni siquiera encuentra un type campo aquí, entonces $eq: [ "$type" , "exam" ] Es falso. ¿Qué le dijiste a $redact que hiciera cuando la condición es falsa? else: "$$PRUNE" , por lo que todo el documento se elimina antes de que se examinen los subdocumentos.

Como solución, prueba si $type es "exam" o no existe. No pediste explícitamente una solución que funcionara, así que te dejaré como ejercicio que averigües cómo hacerlo.