$redact
चरण मूल दस्तावेज़ और उसके क्षेत्रों से शुरू होता है, और केवल जब वह दस्तावेज़ $$DESCEND
की शर्त को पूरा करता है , यह उस दस्तावेज़ में शामिल उप-दस्तावेजों की जांच करता है। इसका मतलब है कि $redact आपके दस्तावेज़ के साथ सबसे पहले इसकी जांच करता है:
{
"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"student_id" : 0,
"class_id" : 2,
"scores" : [] // Some array. I will look at this later.
}
यह एक type
भी नहीं ढूंढता है यहां फ़ील्ड करें, इसलिए $eq: [ "$type" , "exam" ]
गलत है। शर्त झूठी होने पर आपने $redact को क्या करने के लिए कहा? else: "$$PRUNE"
, इसलिए उप-दस्तावेजों की जांच से पहले पूरे दस्तावेज़ को काट दिया जाता है।
समाधान के रूप में, परीक्षण करें कि क्या $type
या तो "exam"
है या मौजूद नहीं है। आपने स्पष्ट रूप से कोई कार्य समाधान नहीं मांगा था, इसलिए मैं इसे एक अभ्यास के रूप में आप पर छोड़ दूंगा कि यह कैसे करना है।