2013-03-26 28 views
13

tôi cố gắng đổi tên trường trong tất cả các văn bản của một bộ sưu tập, vớidb.collection.update() tất cả các tài liệu

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

nhưng chỉ có một tài liệu được thay đổi, tại sao?

+0

bởi bản cập nhật mặc định là số ít, bạn cần phải thêm ', {multi: true}' làm thông số thứ ba – Sammaye

+0

@Sammaye cảm ơn đây là câu trả lời – JuanPablo

+0

@Sammaye bạn có thể thêm nhận xét như câu trả lời để đóng? – JuanPablo

Trả lời

32

Tất cả các cập nhật trong MongoDB, theo mặc định, số ít. Bạn phải thêm một lựa chọn thứ ba để lệnh của bạn để thực hiện:

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

Hoặc, như @totymedli chỉ ra, nếu bạn đang sử dụng 3.2 trở lên, bạn có thể sử dụng updateMany(): MongoDB: update every document on one field

+0

Đây là tham chiếu từ tài liệu MongoDB http : //docs.mongodb.org/manual/applications/update/#update-multiple-documents –

+0

, {multi: true} đã thực hiện mẹo, nhờ – Andy

+0

Vì MongoDB 3.2 bạn cũng có thể [sử dụng 'updateMany'] (https://stackoverflow.com/a/9038593/1494454). – totymedli

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

Làm thế nào để làm điều đó cho oldvalue + "một số chuỗi" –

Các vấn đề liên quan