sql >> Databasteknik >  >> NoSQL >> MongoDB

Redact i mongodb verkar obskyrt för mig

$redact stadiet börjar vid rotdokumentet och dess fält, och endast när det dokumentet uppfyller villkoret att $$DESCEND , granskar den underdokumenten som ingår i det dokumentet. Det betyder att det första $redact gör med ditt dokument är att undersöka detta:

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

Den hittar inte ens en type fältet här, så $eq: [ "$type" , "exam" ] är falskt. Vad sa du till $redact att göra när villkoret är falskt? else: "$$PRUNE" , så hela dokumentet beskärs innan underdokumenten granskas.

Som en lösning, testa om $type är antingen "exam" eller inte finns. Du bad inte uttryckligen om en fungerande lösning, så jag lämnar det som en övning för dig att ta reda på hur du gör detta.




  1. Skillnader mellan com.mongodb.client.MongoClient och com.mongodb.MongoClient

  2. Använder du Active Record-generatorer efter Mongoid-installation?

  3. Använder Joda-Time för att skapa korrekt ISODate för Mongo-inlägg

  4. Görs mongodb säkerhetskopior automatiskt?