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

Redact i mongodb forekommer mig uklart

$redact stadiet starter ved roddokumentet og dets felter, og kun når dette dokument opfylder betingelsen om $$DESCEND , undersøger den underdokumenterne i det pågældende dokument. Det betyder, at den første ting $redact gør med dit dokument er at undersøge dette:

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

Den finder ikke engang en type felt her, så $eq: [ "$type" , "exam" ] er falsk. Hvad har du bedt $redact om at gøre, når betingelsen er falsk? else: "$$PRUNE" , så hele dokumentet beskæres inden underdokumenterne undersøges.

Som en løsning kan du teste om $type er enten "exam" eller eksisterer ikke. Du bad ikke eksplicit om en fungerende løsning, så jeg vil overlade det som en øvelse til dig for at finde ud af, hvordan du gør dette.




  1. Er dette en sikker måde at indsætte og opdatere en række objekter i mongodb?

  2. Indsæt json-fil i mongodb

  3. Er mongodb sikkerhedskopier lavet automatisk?

  4. PHP MongoDB opdaterer flere dokumenter ved hjælp af $in/$or