Hướng dẫn update and insert mongodb - cập nhật và chèn mongodb

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB 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

  • MongoDB là gì? Các khái niệm trong MongoDB
  • Hướng dẫn cài đặt, cấu hình MongoDB trên Windows 10
  • Cài đặt và sử dụng Robo 3T (RoboMongo) trên Windows
  • Hướng dẫn cài đặt MongoDB trên Linux (Ubuntu 16.04)
  • Hướng dẫn MongoDB – Tạo database trong MongoDB
  • Hướng dẫn MongoDB – Xóa, DROP database trong MongoDB
  • Tạo bảng, collections trong MongoDB (Tạo bằng dòng lệnh, Robo3t)
  • Xóa bảng, collections trong MongoDB (Xóa bằng lệnh/ Robo3T)
  • Insert document, bản ghi trong MongoDB (Insert bằng lệnh, Robo3T)
  • Truy vấn dữ liệu/document, find(), Select, Where trong MongoDB
  • Xóa document, row trong MongoDB (bằng dòng lệnh, Robo3T)
  • Update document, dữ liệu trong MongoDB
  • Projection trong MongoDB (SELECT field/column trong MongoDB)
  • Sắp xếp trong MongoDB(orderBy, sorting() trong MongoDB)
  • Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB
  • Xóa cột, field, trường của collections trong MongoDB ($unset)
  • Kiểm tra null, check tồn tại trong MongoDB với $exists
  • Đổi tên field trong MongoDB với $rename
  • Tạo user/roles, phân quyền người dùng trên MongoDB
  • Các loại roles, vai trò, quyền trong MongoDB.
  • Đăng nhập mongodb với username và password (database mongo)
  • Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
  • Replication, Replica Set trong MongoDB là gì?
  • Phân trang trong MongoDB (skip(), limit() paging trong 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'},

Hướng dẫn update and insert mongodb - cập nhật và chèn mongodb

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'}})

Hướng dẫn update and insert mongodb - cập nhật và chèn mongodb

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: https://docs.mongodb.com/manual/mongo/