sql >> Database >  >> NoSQL >> MongoDB

Redigeren in mongodb lijkt mij duister

De $redact fase begint bij het hoofddocument en zijn velden, en alleen wanneer dat document voldoet aan de voorwaarde om $$DESCEND , het onderzoekt de subdocumenten die in dat document zijn opgenomen. Dat betekent dat het eerste wat $redact met uw document doet, dit is:

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

Het vindt niet eens een type veld hier, dus $eq: [ "$type" , "exam" ] is fout. Wat heb je $redact gezegd om te doen als de voorwaarde onwaar is? else: "$$PRUNE" , dus het hele document wordt gesnoeid voordat de subdocumenten worden onderzocht.

Test als tijdelijke oplossing of $type is ofwel "exam" of bestaat niet. Je hebt niet expliciet om een ​​werkende oplossing gevraagd, dus ik zal het als een oefening aan jou overlaten om erachter te komen hoe je dit kunt doen.




  1. mongod, mac os x - rlimits waarschuwing

  2. MongoDB lijst databases met opgegeven prefix in Go

  3. MongoDB en CodeIgniter

  4. MongoDB-connector voor PHP:tel documenten voor paginering