Cập nhật dữ liệu mongodb
Miễn là bạn đồng ý với việc tạo một bản sao của dữ liệu, khung tổng hợp có thể được sử dụng thay thế tại đây. Bạn cũng có tùy chọn để làm nhiều việc hơn với dữ liệu nếu muốn sử dụng các toán tử khác, nhưng toán tử duy nhất bạn cần là Show
Bây giờ, chúng tôi chỉ sử dụng
Sau đó kiểm tra
Khi bạn hài lòng với dữ liệu mới, bạn có thể sử dụng lệnh 1 để loại bỏ dữ liệu cũ và sử dụng dữ liệu mới dưới tên cũ
Một lưu ý cuối cùng - cho đến khi SERVER-7944 hoàn thành, bạn không thể thực hiện tương đương với ảnh chụp nhanh bằng cách gợi ý chỉ mục 2 như được đề xuất trong câu trả lời này và do đó, cuối cùng bạn có thể nhấn vào tài liệu nhiều lần nếu hoạt động ở nơi khác khiến nó di chuyển. Vì bạn đang chèn trường 2 trong ví dụ này nên bất kỳ sự cố nào xảy ra như vậy sẽ gây ra vi phạm khóa duy nhất, vì vậy bạn sẽ không gặp phải trường hợp trùng lặp, nhưng bạn có thể có phiên bản "cũ" của tài liệu. Như mọi khi, hãy kiểm tra kỹ dữ liệu của bạn trước khi bỏ dữ liệu và tốt nhất là sao lưu Phương thức cập nhật () hoặc lưu () trong MongoDB được sử dụng để cập nhật Tài liệu trong một Bộ sưu tập Phương thức update() cập nhật các giá trị trong Tài liệu đang tồn tại trong khi phương thức save() thay thế Tài liệu đang tồn tại với Tài liệu đã truyền trong phương thức save() đó Phương thức update() trong MongoDBPhương thức update() cập nhật các giá trị trong Document đang tồn tại cú pháp Cú pháp cơ bản của phương thức update() là như sau
Ví dụ You follow Collection has mycol name has data after ________số 8_______Ví dụ sau sẽ thiết lập tiêu đề mới 'Hướng dẫn MongoDB mới' của Tài liệu có tiêu đề là 'Tổng quan về MongoDB'
Theo mặc định, MongoDB sẽ chỉ cập nhật một Document đơn, để cập nhật nhiều Document, bạn thiết lập tham số 'multi' thành true
Phương thức save() trong MongoDBPhương thức lưu () thay thế Tài liệu đang tồn tại với Tài liệu mới đã được truyền trong phương thức lưu () này Sửa đổi một tài liệu hiện có hoặc các tài liệu trong một bộ sưu tập. Phương pháp này có thể sửa đổi các trường cụ thể của một hoặc nhiều tài liệu hiện có hoặc thay thế hoàn toàn một tài liệu hiện có, tùy thuộc vào Theo mặc định, phương pháp cập nhật một tài liệu duy nhất. Bao gồm tùy chọn cập nhật tất cả các tài liệu phù hợp với tiêu chí truy vấn cú phápĐã thay đổi trong phiên bản 5. 0 Phương thức có dạng sau
Thông sốPhương thức nhận các tham số sau Tham số Loại Sự miêu tả tài liệu Tiêu chí lựa chọn cập nhật. Giống như trong phương pháp có sẵn Khi bạn thực hiện một với tài liệu hoặc đường dẫn Các sửa đổi để áp dụng. Có thể là một trong những điều sau đây chỉ chứa Chỉ chứa (Bắt đầu từ MongoDB 4. 2) Chỉ chứa các giai đoạn tổng hợp sau và bí danh của nó và bí danh của nó và bí danh của nó Để biết chi tiết và ví dụ, xem boolean Không bắt buộc. Khi
Nếu cả 5 và 6 đều đúng và không có tài liệu nào phù hợp với truy vấn, thì thao tác cập nhật chỉ chèn một tài liệu duy nhấtĐể tránh nhiều , đảm bảo rằng (các) trường 3 là. Xem ví dụMặc định là 8, không chèn tài liệu mới khi không tìm thấy kết quả phù hợpboolean Không bắt buộc. Nếu được đặt thành tài liệu Không bắt buộc. Một tài liệu bày tỏ mối quan tâm viết. Bỏ qua để sử dụng mối quan tâm ghi mặc định Không đặt rõ ràng mối quan tâm ghi cho hoạt động nếu chạy trong một giao dịch. Để sử dụng ghi mối quan tâm với các giao dịch, hãy xem Để biết ví dụ sử dụng 4, hãy xemtài liệu Không bắt buộc Đối chiếu cho phép người dùng chỉ định các quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi, chẳng hạn như quy tắc cho chữ cái và dấu trọng âm Để biết ví dụ sử dụng mảng Không bắt buộc. Mảng tài liệu bộ lọc xác định phần tử mảng nào cần sửa đổi cho thao tác cập nhật trên trường mảng Trong , hãy sử dụng the để xác định mã định danh để chỉ cập nhật những phần tử mảng khớp với tài liệu bộ lọc tương ứng trong Ghi chúBạn không thể có tài liệu bộ lọc mảng cho mã định danh nếu mã định danh không được đưa vào tài liệu cập nhật Ví dụ, xem Tài liệu hoặc chuỗi Không bắt buộc. Một tài liệu hoặc chuỗi chỉ định chỉ mục sẽ sử dụng để hỗ trợ Tùy chọn có thể lấy tài liệu đặc tả chỉ mục hoặc chuỗi tên chỉ mục Nếu bạn chỉ định một chỉ mục không tồn tại, lỗi hoạt động Ví dụ, xem Mới trong phiên bản 4. 2 tài liệu Không bắt buộc Chỉ định một tài liệu với một danh sách các biến. Điều này cho phép bạn cải thiện khả năng đọc lệnh bằng cách tách các biến khỏi văn bản truy vấn Cú pháp tài liệu là Biến được đặt thành giá trị mà biểu thức trả về và không thể thay đổi sau đó Để truy cập giá trị của một biến trong lệnh, hãy sử dụng tiền tố ký hiệu đô la kép ( 0) cùng với tên biến của bạn ở dạng 1. Ví dụ. 2Ghi chúĐể sử dụng một biến để lọc kết quả, bạn phải truy cập vào biến đó trong toán tử Để biết ví dụ hoàn chỉnh về cách sử dụng 4 và các biến, hãy xemMới trong phiên bản 5. 0 trả lạiPhương thức trả về một tài liệu chứa trạng thái của hoạt động Kiểm soát truy cậpKhi triển khai chạy với , người dùng phải có quyền truy cập bao gồm các đặc quyền sau
Vai trò tích hợp cung cấp các đặc quyền cần thiết Cư xửSử dụng { "_id" : 1, "member" : "abc123", "status" : "Modified", "points" : 2, "lastUpdate" : ISODate("2020-01-23T05:11:45.784Z"), "comments" : [ "note to self: confirm status", "Need to activate" ] }{ "_id" : 2, "member" : "xyz123", "status" : "Modified", "points" : 60, "lastUpdate" : ISODate("2020-01-23T05:11:45.784Z"), "comments" : [ "reminder: ping me at 100pts", "Some random comment" ] }3 trong Bản cập nhật với db.students3.insertMany( [ { "_id" : 1, "tests" : [ 95, 92, 90 ], "lastUpdate" : ISODate("2019-01-01T00:00:00Z") }, { "_id" : 2, "tests" : [ 94, 88, 90 ], "lastUpdate" : ISODate("2019-01-01T00:00:00Z") }, { "_id" : 3, "tests" : [ 70, 75, 82 ], "lastUpdate" : ISODate("2019-01-01T00:00:00Z") }] )2Cố gắng sử dụng toán tử $expr với cờ upsert được đặt thành 1 sẽ tạo ra lỗi. Bộ sưu tập được chia nhỏĐể sử dụng với 5 trên bộ sưu tập được phân đoạn, bạn phải bao gồm kết quả khớp chính xác trên trường 3 hoặc nhắm mục tiêu một phân đoạn duy nhất (chẳng hạn như bằng cách bao gồm khóa phân đoạn)Khi thực hiện các hoạt động cập nhật (chứ không phải hoạt động thay thế tài liệu), có thể nhắm mục tiêu nhiều phân đoạn MẹoXem thêmThay thế các thao tác tài liệu trên bộ sưu tập được phân mảnhBắt đầu từ MongoDB 4. 2, thay thế hoạt động tài liệu cố gắng nhắm mục tiêu một phân đoạn duy nhất, trước tiên bằng cách sử dụng bộ lọc truy vấn. Nếu thao tác không thể nhắm mục tiêu một phân đoạn duy nhất bằng bộ lọc truy vấn, thì thao tác đó sẽ cố gắng nhắm mục tiêu bằng tài liệu thay thế Trong các phiên bản trước, hoạt động cố gắng nhắm mục tiêu bằng cách sử dụng tài liệu thay thế
db.members.insertMany( [ { "_id" : 1, "member" : "abc123", "status" : "A", "points" : 2, "misc1" : "note to self: confirm status", "misc2" : "Need to activate", "lastUpdate" : ISODate("2019-01-01T00:00:00Z") }, { "_id" : 2, "member" : "xyz123", "status" : "A", "points" : 60, "misc1" : "reminder: ping me at 100pts", "misc2" : "Some random comment", "lastUpdate" : ISODate("2019-01-01T00:00:00Z") }] ) |