2013-03-26 19 views
13

我嘗試在集合中的所有文件重命名一個字段,用db.collection.update()的所有文件

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

,但只有一個文件被改變了,爲什麼?

+0

默認更新單數,你需要添加',{multi:true}'作爲第三個參數 – Sammaye 2013-03-26 23:58:18

+0

@Sammaye謝謝你的回答 – JuanPablo 2013-03-27 00:07:52

+0

@Sammaye你可以添加評論就像一個答案關閉? – JuanPablo 2013-03-27 00:08:49

回答

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 – 2013-03-27 00:17:20

+0

,{multi:true}做了竅門,謝謝 – Andy 2017-06-08 05:38:19

+0

由於MongoDB 3.2你也可以[使用'updateMany'](https:/ /stackoverflow.com/a/9038593/1494454)。 – totymedli 2017-09-20 01:29:42

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

如何爲oldvalue +「一些字符串」 – 2017-11-14 11:02:37

相關問題