Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual
Sử dụng menu chọn ngôn ngữ của bạn ở phía trên bên phải để đặt ngôn ngữ của các ví dụ sau.Select your language drop-down menu in the upper-right to set the language of the following examples.
Ghi chú
Bắt đầu từ MongoDB 4.2, MongoDB có thể chấp nhận một đường ống tổng hợp để chỉ định các sửa đổi để thực hiện thay vì tài liệu cập nhật. Xem trang tham chiếu phương thức để biết chi tiết.
Tất cả các hoạt động viết trong MongoDB đều là nguyên tử ở cấp độ của một tài liệu. Để biết thêm thông tin về MongoDB và tính nguyên tử, hãy xem tính nguyên tử và giao dịch.
Sau khi được đặt, bạn không thể cập nhật giá trị của trường _id
và bạn cũng không thể thay thế một tài liệu hiện có bằng một tài liệu thay thế có giá trị trường _id
khác nhau.
Đối với các hoạt động ghi, MongoDB bảo tồn thứ tự của các trường tài liệu ngoại trừ các trường hợp sau:
Trường
_id
luôn là trường đầu tiên trong tài liệu.Các bản cập nhật bao gồm
renaming
tên trường có thể dẫn đến việc sắp xếp lại các trường trong tài liệu.
Với các mối quan tâm ghi, bạn có thể chỉ định mức độ xác nhận được yêu cầu từ MongoDB cho các hoạt động viết. Để biết chi tiết, xem Viết mối quan tâm.
This entry is part 12 of 24 in the series MongoDB
Update document, dữ liệu trong MongoDB.
Cú pháp:
Để update document trong MongoDB ta dùng method
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},0:
db.collection_name.update[ , , { upsert: , multi: , writeConcern: , collation: , arrayFilters: [ , ... ] } ]
Trong đó:
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},
1: là mệnh đề where trong MongoDB dùng để chọn ra những document được update{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},
2: trường được update và giá trị mới được update.{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},
3: [boolean]: mặc định là false. Nếu là true thì sẽ tạo document mới nếu không tìm thấy document nào thỏa mãn{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},
1- multi: [boolean]: mặc định là false. Nếu là true thì mới cho phép update nhiều document cùng thỏa mãn
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},
1 - …
Ví dụ trong collection
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},6 mình có 5 bản ghi như sau:
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},
Bây giờ muốn đổi country của player có name = ‘neymar’ thành ‘spain’ thì câu lệnh sẽ là:
db.player.update[{'name':'neymar'},{$set: {'country':'spain'}}]
Một số ví dụ khác:
Đổi country = ‘vn’ với các player có name = ‘ronaldo’ hoặc name = ‘modric’
db.player.update[{'name': {$in :['ronaldo', 'modric']}},{$set: {'country':'vn'}}, {'multi':true}]
Đổi country = ‘japan’, name = ‘honda’ với document có _id = ‘1’
db.player.update[{'_id':'1'},{$set: {'country':'japan','name':'honda'}}]
*Lưu ý, nếu trong phần update bạn không dùng {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'},
{'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'},
{'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'},
{'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'},
{'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},
7 thì các field không được chỉ rõ sẽ bị null:, nếu trong phần update bạn không dùng
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':'25'}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':'25'}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':'18'}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':'30'}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':'33'},7 thì các field không được chỉ rõ sẽ bị null:
Ví dụ:
db.player.update[{'_id':'1'}, {'country':'japan','name':'honda'}]
Lệnh trên sẽ đổi country = ‘japan’, name = ‘honda’, age = null với document có _id = ‘1’
________________________
Okay, Done!
References: //docs.mongodb.com/manual/mongo/