Cập nhật các tài liệu
Để cập nhật một tài liệu trong MongoDB, chúng ta kết hợp các đối số từ các hoạt động truy vấn và điền vào một hoạt
động đơn. Chúng ta có thể sử dụng cùng tiêu chuẩn để lọc các tài liệu như chúng ta đã làm cho find(). Để cập nhật
một trường đơn từ tài liệu, chúng ta sử dụng toán tử $set:
1. Chúng ta có thể cập nhật trường age cho user với username dan như sau:
> db.users.updateOne({ username: ‘dan’ }, { $set: { age: 27 } })
Chú ý
Chính như findOne, updateOne chỉ cập nhật tài liệu khớp đầu tiên. Nếu chúng ta muốn cập nhật tất cả các tài liệu cái
khớp, chúng ta có thể sử dụng updateMany.
MongoDB sẽ trả về một object với thông tin về có bao nhiêu tài liệu khớp (matchedCount), có bao nhiêu đã được
điều chỉnh (modifiedCount), và có bao nhiêu được upsert (upsertedCount).
2. Phương thức updateOne chấp nhận một đối số thứ ba, cái là một object options. Một tùy chọn hữu dụng ở đây
là tùy chọn upsert, cái, nếu thiết lập thành true, sẽ điền một tài liệu nếu nó chưa tồn tại, và cập nhật nó
nếu nó đã tồn tại. Trước tiên hãy thử cập nhật một user không tồn tại với upsert: false:
> db.users.updateOne({ username: ‘new’ }, { $set: { fullName:
‘New User’ } })
3. Bây giờ chúng ta thiết lập upsert thành true, cái điền user:
> db.users.updateOne({ username: ‘new’ }, { $set: { fullName:
‘New User’ } }, { upsert: true })
Chú ý
Nếu bạn muốn loại bỏ một trường từ một tài liệu, sử dụng toán tử $unset. Nếu bạn muốn thay thế toàn bộ tài liệu
với một tài liệu mới, bạn có thể sử dụng phương thức replaceOne và truyền một tài liệu mới như đối số thứ hai tới
nó.