नोट: कोड निष्पादित करने के लिए कृपया mongodb खोल का उपयोग करें।MongoDB संग्रह में उप-दस्तावेज़ को अद्यतन/हटाएं
समस्या 1:
मान लीजिए कि मैं
{
"_id" : 4,
"grades" : [
{
"grade" : 80,
"mean" : 75,
"std" : 8
},
{
"grade" : 85,
"mean" : 90,
"std" : 5
},
{
"grade" : 85,
"mean" : 90,
"std" : 5
},
{
"grade" : 85,
"mean" : 95,
"std" : 6
},
{
"grade" : 90,
"mean" : 85,
"std" : 5
}
]
}
नीचे के रूप में एक छात्र दस्तावेज़ है हम 2 समस्या है माना कि आप के साथ _ id = 4 & & ग्रेड सभी सहायक दस्तावेज़ों को अद्यतन करता चाहता है की सुविधा देता है। ग्रेड = 85 & & ग्रेड.स्टडी = 5, std = 6 के साथ आप
db.students.update({'$and':[ { _id: 4},{ "grades.grade": 85 }, {"grades.std": 5 } ]}, { $set: { "grades.$.std" : 6 } });
के रूप में लिखेंगे beacause यह एसटीडी = 5 मैच है +५३६९१३६३२१०
अब अगर आप बयान से ऊपर निष्पादित कई बार (3 बार) तो आदर्श रूप में यह अद्यतन करना चाहिए 2nd, 3rd उप दस्तावेजों
लेकिन पिछले उप दस्तावेज़ भी अद्यतन हो रही है, लेकिन हम $ और$ या के रूप में स्थिति दी गई है, तो आखिरी दस्तावेज़ कैसे अपडेट हो रहा है?
समस्या 2: अब मान लीजिए कि आप subdocument ही क्वेरी मापदंड के साथ मिलान दूर करने के लिए चाहता है। मैं निम्नलिखित की कोशिश की बयान
db.students.update({_id:4,'grades.grade':85},{'$unset':{'grades.$':1}})
क्योंकि $ सेट किए बिना उप दस्तावेज/सरणियों के मामले में अशक्त रखा जाएगा, कैसे इस समस्या को हल करने के लिए?
अपने mongodb कंसोल में दोहराने के लिए कैसे?
db.students.insert({ "_id" : 4, "grades" : [ { grade: 80, mean: 75, std: 8 }, { grade: 85, mean: 90, std: 5 }, { grade: 85, mean: 90, std: 5 }, { grade: 85, mean: 95, std: 6 }, { grade: 90, mean: 85, std: 5 } ] });
पहले प्रश्न के उत्तर के लिए धन्यवाद, मैंने पहले से ही @drmirror उत्तर के साथ प्रयास किया है। $ पुल सहायक दस्तावेज़ों के मामले में अशक्त सेट हो जाएगा, तो मैं इसे शून्य पर अद्यतन करने, एक और subdocument से अशक्त दूर करने के लिए के लिए 2 अद्यतन बयान एक निष्पादित करने के लिए किया है। क्या यह एक अपडेट स्टेटमेंट के लिए संभव है? –
2.4 में यह उप दस्तावेज खींच रहा है और शून्य के रूप में सेट नहीं है। – Ross
बेहद क्षमा करें, मेरा बुरा ... यह काम किया ... बहुत बहुत धन्यवाद –