sql >> Databáze >  >> NoSQL >> MongoDB

Redact v mongodb mi připadá obskurní

$redact fáze začíná v kořenovém dokumentu a jeho polích a pouze tehdy, když tento dokument splňuje podmínku $$DESCEND , přezkoumá dílčí dokumenty obsažené v tomto dokumentu. To znamená, že první věc, kterou $redact udělá s vaším dokumentem, je prozkoumat toto:

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

Nenajde ani type pole zde, takže $eq: [ "$type" , "exam" ] je nepravdivé. Co jste řekli $redact, aby udělal, když je podmínka nepravdivá? else: "$$PRUNE" , takže celý dokument je před prozkoumáním dílčích dokumentů oříznut.

Jako náhradní řešení otestujte, zda $type je buď "exam" nebo neexistuje. Explicitně jste nežádali o funkční řešení, takže to nechám jako cvičení na vás, abyste zjistili, jak to udělat.




  1. Použití nginx k poskytování obsahu přímo z mezipaměti redis

  2. MongoDB:Mapreduce:snížit->vícenásobek zatím není podporován

  3. Jaký je rozdíl mezi Date.now() a Date.now v mongoose?

  4. Nastavení připojení MongoDB s Airflow