2013-03-26 11 views
13

provo rinominare un campo in tutti i documenti di una raccolta, condb.collection.update() tutti i documenti

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

ma solo un documento viene modificato, perché?

+0

dagli aggiornamenti di default sono singolare, è necessario aggiungere ', {multi: true}' come terzo parametro – Sammaye

+0

@Sammaye grazie questa è la risposta – JuanPablo

+0

@Sammaye è possibile aggiungere il commento come una risposta per chiudere? – JuanPablo

risposta

32

Tutti gli aggiornamenti in MongoDB sono, per impostazione predefinita, singolari. È necessario aggiungere una terza opzione al comando di fare:

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

O, come @totymedli sottolineato, se si utilizza 3.2 e superiori è possibile utilizzare updateMany(): MongoDB: update every document on one field

+0

Ecco il riferimento da http di documentazione MongoDB : //docs.mongodb.org/manual/applications/update/#update-multiple-documents –

+0

, {multi: true} ha fatto il trucco, grazie – Andy

+0

Dal momento che MongoDB 3.2 è anche possibile [utilizzare 'updateMany'] (https://stackoverflow.com/a/9038593/1494454). – totymedli

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

Come farlo per oldvalue + "some string" –