2013-03-26 4 views
13

मैं एक संग्रह के सभी दस्तावेजों में एक क्षेत्र का नाम बदलने की कोशिश,db.collection.update() सभी दस्तावेजों

db.coll.update({},{ $rename: {'originField':'newField'} }); 

लेकिन केवल एक दस्तावेज़ बदल गया है के साथ, क्यों?

+0

डिफ़ॉल्ट अपडेट से कर रहे हैं एकवचन, आपको तीसरे परम – Sammaye

+0

@Sammaye के रूप में ', {multi: true}' जोड़ने की आवश्यकता है धन्यवाद, यह उत्तर – JuanPablo

+0

@Sammaye आप टिप्पणी को बंद करने के उत्तर की तरह जोड़ सकते हैं? – JuanPablo

उत्तर

32

MongoDB में सभी अपडेट डिफ़ॉल्ट रूप से एकवचन हैं। ,

db.coll.update({},{ $rename: {'originField':'newField'} }, {multi:true}); 

या, जैसा कि @totymedli ने बताया अगर आप 3.2 का उपयोग कर रहे हैं और इसके बाद के संस्करण आप updateMany() उपयोग कर सकते हैं:: आप करने के लिए अपने आदेश के लिए एक तीसरा विकल्प को जोड़ना होगा MongoDB: update every document on one field

+0

यहां मोंगोडीबी दस्तावेज http से संदर्भ है : //docs.mongodb.org/manual/applications/update/#update-multiple- दस्तावेज़ –

+0

, {बहु: सत्य} चाल चल रही है, धन्यवाद – Andy

+0

चूंकि मोंगोडीबी 3.2 आप [अपडेटमनी 'का उपयोग भी कर सकते हैं] (https://stackoverflow.com/a/9038593/1494454)। – totymedli

2
db.collectionname.update({ "field" : "oldvalue" }, { $set:{ "field" : "newvalue" } }, { multi : true }); 
+0

पुरानी अवधि के लिए इसे कैसे करें + "कुछ स्ट्रिंग" –

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