2013-03-26 3 views
13

Я пытаюсь переименовать одно поле во всех документах коллекции, сdb.collection.update() все документы

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

, но только один документ изменен, то почему?

+0

обновлений по умолчанию являются единственное, вам нужно добавить ', {multi: true}' в качестве третьего параметра – Sammaye

+0

@Sammaye спасибо, что это ответ – 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

Вот ссылка на документацию MongoDB http : //docs.mongodb.org/manual/applications/update/#update-multiple-documents –

+0

, {multi: true} сделал трюк, спасибо – Andy

+0

Поскольку MongoDB 3.2 вы также можете использовать [updateMany'] (https://stackoverflow.com/a/9038593/1494454). – totymedli

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

Как это сделать для oldvalue + "some string" –