2013-03-26 12 views
13

Ich versuche, ein Feld in allen Dokumenten einer Sammlung umbenennen, mitdb.collection.update() alle Dokumente

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

aber nur ein Dokument geändert wird, warum?

+0

standardmäßig Updates singular, müssen Sie ', {multi: true}' als dritten Parameter hinzufügen – Sammaye

+0

@Sammaye Danke, das ist die Antwort – JuanPablo

+0

@Sammaye Sie können den Kommentar wie eine Antwort hinzufügen, um zu schließen? – JuanPablo

Antwort

32

Alle Updates in MongoDB sind standardmäßig singulär. Sie müssen eine dritte Option, um Ihren Befehl hinzufügen zu machen:

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

Oder, wie @totymedli wies darauf hin, wenn Sie 3.2 verwenden und über Sie updateMany() verwenden können: MongoDB: update every document on one field

+0

Hier ist der Verweis von MongoDB Dokumentation http : //docs.mongodb.org/manual/applications/update/#update-multiple-documents –

+0

, {multi: true} hat den Trick gemacht, danke – Andy

+0

Seit MongoDB 3.2 können Sie auch [updateMany' verwenden] (https://stackoverflow.com/a/9038593/1494454). – totymedli

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

Wie es für Oldvalue + "einige Zeichenfolge" –

Verwandte Themen