2013-04-16 11 views
12

मैं वसंत के लिए mongotemplate का उपयोग कर रहा हूं, और मैं सोच रहा था कि मैं अपने दस्तावेज़ों में से एक के मूल्य को कैसे बढ़ा सकता हूं जो मेरे पास परमाणु रूप से है। कल्पना कीजिए कि हमनेस्टेड सरणी के अंदर मोंगोड वृद्धि मूल्य

{'a':1, 
    b:[{_id:341432, 
     c:2 
     }, 
     {_id:341445, 
     c:3 
     }]}; 

क्या मैं चाहूँगा 3 से वेतन वृद्धि ग 4 _ id 341445

मैं findAndModify उपयोग किया गया है, लेकिन मुझे पता है कि मैं इसे एक नेस्टेड दस्तावेज़ के लिए कर सकते हैं एक में न के लिए है सरणी।

सम्मान।

+0

अब तक केवल बात यह है कि मैंने पाया है कि सरणी के सूचकांक को b.0.c = 11111 कोई बेहतर विचार है? – paul

उत्तर

23

एक सरणी क्षेत्र में एक तत्व को अद्यतन करने के लिए आपको positional $ operator

उदाहरण के लिए उपयोग कर सकते हैं, तो निम्न js वेतन वृद्धि _ id 341,445 के लिए 3 से 4 करें c:

db.collection.update({a:1, "b._id":341445} , {$inc:{"b.$.c":1}}) 
+5

धन्यवाद !, लेकिन याद रखें कि आपका उत्तर जावा – paul

+0

पर निकाला जाना है, यह तब काम नहीं करेगा जब अद्यतन क्वेरी अपरर्ट के साथ उपयोग की जाती है। –

+0

धन्यवाद धन्यवाद, धन्यवाद। मैं इसे काम करने के लिए तीन घंटे खर्च कर रहा हूं !!! बहुत बढ़िया जवाब!! –

संबंधित मुद्दे