MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu được cung cấp công khai. Chúng tôi có thể cập nhật các tài liệu trong bộ sưu tập bằng nhiều phương pháp khác nhau như cập nhật, thay thế và lưu. Để thay đổi một trường cụ thể của tài liệu, chúng tôi sẽ sử dụng các toán tử khác nhau như $set, $inc, v.v. Show
Trong hướng dẫn này, chúng ta sẽ học cách sửa đổi nhiều trường của tài liệu bằng truy vấn cập nhật và thay thế. Đối với mục đích trình diễn, trước tiên chúng ta sẽ thảo luận về truy vấn trình bao mongo và sau đó là triển khai tương ứng của truy vấn đó trong Java Bây giờ chúng ta hãy xem xét các phương pháp khác nhau để đạt được mục đích 2. Truy vấn Shell để cập nhật các trường khác nhauTrước khi bắt đầu, trước tiên chúng ta hãy tạo cơ sở dữ liệu mới, baeldung và bộ sưu tập mẫu, employee. Chúng tôi sẽ sử dụng bộ sưu tập này trong tất cả các ví dụ
Bây giờ, hãy thêm một số tài liệu vào bộ sưu tập này bằng cách sử dụng truy vấn insertMany
Kết quả là chúng ta sẽ nhận được một JSON với ObjectId cho cả hai tài liệu như hình bên dưới
Cho đến nay, chúng tôi đã thiết lập môi trường cần thiết. Bây giờ hãy cập nhật các tài liệu mà chúng tôi vừa chèn 2. 1. Cập nhật nhiều trường của một tài liệuChúng ta có thể sử dụng toán tử $set và $inc để cập nhật bất kỳ trường nào trong MongoDB. Toán tử $set sẽ đặt giá trị mới được chỉ định trong khi toán tử $inc sẽ tăng giá trị theo một giá trị đã chỉ định Trước tiên, hãy xem xét truy vấn MongoDB để cập nhật hai trường của bộ sưu tập nhân viên bằng cách sử dụng toán tử $set
Trong truy vấn trên, trường employee_id và employee_name được sử dụng để lọc tài liệu và toán tử $set được sử dụng để cập nhật trường job và department_id Chúng ta cũng có thể sử dụng các toán tử $set và $inc cùng nhau trong một truy vấn cập nhật duy nhất
Thao tác này sẽ cập nhật trường công việc thành Quản lý bán hàng và tăng department_id lên 1 2. 2. Cập nhật nhiều trường của nhiều tài liệuNgoài ra chúng ta cũng có thể cập nhật nhiều trường của nhiều tài liệu trong MongoDB. Chúng ta chỉ cần thêm tùy chọn multi. true để sửa đổi tất cả các tài liệu phù hợp với tiêu chí truy vấn bộ lọc
Ngoài ra, chúng tôi sẽ nhận được kết quả tương tự bằng cách sử dụng truy vấn updateMany
Trong truy vấn trên, chúng tôi đã sử dụng phương thức updateMany để cập nhật nhiều hơn 1 tài liệu của bộ sưu tập 2. 3. Sự cố thường gặp khi cập nhật nhiều trườngCho đến nay, chúng ta đã học cách cập nhật nhiều trường bằng cách sử dụng truy vấn cập nhật bằng cách cung cấp hai toán tử khác nhau hoặc sử dụng một toán tử duy nhất trên nhiều trường Bây giờ, nếu chúng ta sử dụng một toán tử nhiều lần với các trường khác nhau trong một truy vấn, MongoDB sẽ chỉ cập nhật câu lệnh cuối cùng của truy vấn cập nhật và bỏ qua phần còn lại
Truy vấn trên sẽ trả về kết quả tương tự như truy vấn này ________số 8_______Trong trường hợp này, công việc duy nhất sẽ được cập nhật thành "Quản lý bán hàng". Giá trị department_id sẽ không được cập nhật thành 3 3. Cập nhật các trường bằng trình điều khiển JavaCho đến nay, chúng ta đã thảo luận về các truy vấn MongoDB thô. Bây giờ hãy thực hiện các thao tác tương tự bằng Java. Trình điều khiển Java MongoDB hỗ trợ hai lớp để biểu diễn một tài liệu MongoDB, com. mongodb. BasicDBObject và tổ chức. con trai. Tài liệu. Chúng ta sẽ xem xét cả hai phương pháp để cập nhật các trường trong tài liệu Trước khi tiếp tục, trước tiên hãy kết nối với bộ sưu tập nhân viên bên trong baeldung DB
Ở đây, chúng tôi giả định rằng MongoDB đang chạy cục bộ tại cổng mặc định là 27017 3. 1. Sử dụng DBObjectĐể tạo tài liệu trong MongoDB, chúng ta sẽ sử dụng lệnh com. mongodb. Giao diện DBObject và lớp triển khai của nó com. mongodb. BasicDBObject Việc triển khai DBObject dựa trên các cặp khóa-giá trị. BasicDBObject được kế thừa từ lớp LinkedHashMap trong gói util Bây giờ chúng ta hãy sử dụng com. mongodb. BasicDBObject để thực hiện thao tác cập nhật trên nhiều trường 0Ở đây, trước tiên, chúng tôi đã tạo một truy vấn bộ lọc trên cơ sở employee_id. Thao tác này sẽ trả về một bộ tài liệu. Hơn nữa, chúng tôi đã cập nhật giá trị của bộ phận_id và công việc theo truy vấn đã đặt 3. 2. Sử dụng tài liệu bsonChúng tôi có thể thực hiện tất cả các thao tác MongoDB bằng tài liệu bson. Đối với điều đó, trước tiên, chúng ta cần đối tượng bộ sưu tập và sau đó thực hiện thao tác cập nhật bằng cách sử dụng phương thức updateMany với các chức năng bộ lọc và thiết lập 1Ở đây, chúng tôi đang chuyển bộ lọc truy vấn tới phương thức updateMany. Bộ lọc eq đối sánh employee_id với văn bản đối sánh chính xác '794875'. Sau đó, chúng tôi cập nhật bộ phận_id và công việc bằng cách sử dụng toán tử thiết lập 4. Sử dụng Truy vấn Thay thếCách tiếp cận ngây thơ để cập nhật nhiều trường của tài liệu là thay thế nó bằng một tài liệu mới có các giá trị được cập nhật Ví dụ: nếu chúng tôi muốn thay thế một tài liệu bằng employee_id 794875, chúng tôi có thể thực hiện truy vấn sau 2Lệnh trên sẽ in một JSON xác nhận ở đầu ra ________số 8_______Ở đây, trường employee_id được sử dụng để lọc tài liệu. Đối số thứ hai của truy vấn cập nhật biểu thị tài liệu mà tài liệu hiện có sẽ được thay thế Trong truy vấn trên, chúng tôi đang thực hiện replaceOne, do đó, nó sẽ chỉ thay thế một tài liệu duy nhất bằng bộ lọc đó. Ngoài ra, nếu chúng tôi muốn thay thế tất cả các tài liệu bằng truy vấn bộ lọc đó, thì chúng tôi sẽ cần sử dụng phương thức updateMany 5. Phần kết luậnTrong bài viết này, chúng tôi đã khám phá nhiều cách khác nhau để cập nhật nhiều trường của tài liệu trong MongoDB. Chúng tôi đã thảo luận rộng rãi về hai cách triển khai, sử dụng MongoDB shell và sử dụng trình điều khiển Java Có nhiều tùy chọn khác nhau để cập nhật nhiều trường của tài liệu bao gồm các toán tử $inc và $set Làm cách nào để so sánh hai đối tượng trong MongoDB?Bạn có thể thử sử dụng toán tử $reduce để trả về giá trị boolean dựa trên phép so sánh. . $filter để lọc tên. "A" từ các lược đồ khách hàng $arrayElemAt để lấy phần tử đầu tiên từ kết quả đã lọc từ bước trên các bước tương tự như trên cho tên. "B" $let để khai báo biến cho "A" trong a và "B" trong b Làm cách nào để so sánh hai bộ sưu tập MongoDB?so sánh các bộ sưu tập trong hai cơ sở dữ liệu khác nhau (nguồn và đích, cơ sở dữ liệu có thể ở trên cùng một máy chủ hoặc trên các máy chủ khác nhau) chọn các bộ sưu tập để so sánh . phân tích từng tài liệu và cho biết liệu nó đã được thêm, xóa hoặc cập nhật trong các bộ sưu tập nguồn. đồng bộ hóa các thay đổi vào bộ sưu tập đích.
Làm cách nào để so sánh giá trị trong MongoDB?Để so sánh các giá trị loại BSON khác nhau, hãy xem thứ tự so sánh BSON đã chỉ định. So khớp các giá trị bằng với một giá trị đã chỉ định. So khớp các giá trị lớn hơn một giá trị đã chỉ định. So khớp các giá trị lớn hơn hoặc bằng một giá trị đã chỉ định.
Làm cách nào để so sánh hai mảng trong MongoDB?Bạn có thể sử dụng toán tử mảng tổng hợp như $filter hoặc $reduce để so sánh các phần tử mảng và trả về kết quả . Các toán tử mảng này hoạt động giống như các trình lặp (như lặp trong vòng lặp for trên trường mảng JavaScript hoặc Java). Xem các ví dụ về hai toán tử trong Hướng dẫn sử dụng MongoDB. |