MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Redact in Mongodb scheint mir obskur

Der $redact Die Phase beginnt beim Stammdokument und seinen Feldern und nur dann, wenn dieses Dokument die Bedingung für $$DESCEND erfüllt , prüft sie die in diesem Dokument enthaltenen Unterdokumente. Das heißt, das erste, was $redact mit Ihrem Dokument macht, ist Folgendes zu untersuchen:

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

Es findet nicht einmal einen type Feld hier, also $eq: [ "$type" , "exam" ] ist falsch. Was haben Sie $redact gesagt, was zu tun ist, wenn die Bedingung falsch ist? else: "$$PRUNE" , sodass das gesamte Dokument bereinigt wird, bevor die Unterdokumente untersucht werden.

Testen Sie als Problemumgehung, ob $type entweder "exam" ist oder existiert nicht. Sie haben nicht ausdrücklich nach einer funktionierenden Lösung gefragt, also überlasse ich es Ihnen als Übung, herauszufinden, wie das geht.