Mongodb kéo và addtoset cùng nhau
MongoDB cung cấp các loại toán tử cập nhật mảng khác nhau để cập nhật giá trị của các trường mảng trong tài liệu và toán tử $addToSet là một trong số đó. Toán tử này được sử dụng để thêm một giá trị vào một mảng và nếu giá trị đã tồn tại trong mảng, thì toán tử này sẽ không làm gì cả Show cú pháp { $addToSet: { Here,
Thêm giá trị vào một mảngTrong ví dụ này, chúng tôi đang thêm nhiều giá trị, tôi. e. , [“Perl”, “Go”, “Ruby”] trong mảng ngôn ngữ với sự trợ giúp của công cụ sửa đổi $each. Ở đây, “Perl” không thêm vào mảng vì nó đã tồn tại $push là một toán tử cập nhật trong MongoDB để thêm giá trị vào một mảng. Ngược lại, toán tử $set được sử dụng để cập nhật giá trị của một trường hiện có trong tài liệu Trong hướng dẫn ngắn này, chúng tôi sẽ giới thiệu cách thực hiện các thao tác $push và $set cùng nhau trong một truy vấn cập nhật duy nhất 2. Khởi tạo cơ sở dữ liệuTrước khi chúng tôi tiếp tục thực hiện nhiều thao tác cập nhật, trước tiên chúng tôi cần thiết lập cơ sở dữ liệu baeldung và nhãn hiệu thu thập mẫu
Hãy chèn một vài tài liệu vào các dấu sưu tập bằng cách sử dụng phương thức insertMany của MongoDB
Khi chèn thành công, truy vấn trên sẽ trả về phản hồi sau
Cho đến nay, chúng tôi đã chèn thành công một số tài liệu mẫu vào bộ sưu tập nhãn hiệu 3. Hiểu vấn đềĐể hiểu rõ vấn đề, trước tiên chúng ta hãy tìm hiểu tài liệu mà chúng ta vừa đưa vào. Nó bao gồm các chi tiết sinh viên và các điểm họ đạt được trong các môn học khác nhau. Tổng điểm là tổng điểm đạt được ở các môn học khác nhau Hãy xem xét một tình huống mà chúng tôi muốn thêm một chủ đề mới trong mảng chủ đề Chi tiết. Để làm cho dữ liệu nhất quán, chúng tôi cũng cần cập nhật trường TotalMarks Trong MongoDB, trước tiên, chúng ta sẽ thêm chủ thể mới vào mảng bằng cách sử dụng toán tử $push. Sau đó, chúng ta sẽ đặt trường totalMarks thành một giá trị cụ thể bằng cách sử dụng toán tử $set Cả hai thao tác này đều có thể được thực hiện riêng lẻ bằng cách sử dụng toán tử $push và $set tương ứng. Nhưng chúng ta có thể viết truy vấn MongoDB để thực hiện cả hai thao tác cùng nhau 4. Sử dụng truy vấn Shell MongoDBTrong MongoDB, chúng ta có thể cập nhật nhiều trường của tài liệu bằng các toán tử cập nhật khác nhau. Ở đây, chúng ta sẽ sử dụng đồng thời cả hai toán tử $push và $set trong truy vấn updateOne Hãy xem ví dụ có chứa cả hai toán tử $push và $set cùng nhau
Ở đây, trong truy vấn trên, chúng tôi đã thêm truy vấn bộ lọc dựa trên studentId. Khi chúng tôi nhận được tài liệu đã lọc, chúng tôi sẽ cập nhật totalMarks bằng cách sử dụng toán tử $set. Ngoài ra, chúng tôi chèn dữ liệu chủ đề mới vào mảng chủ đề Chi tiết bằng cách sử dụng toán tử $push Kết quả là, truy vấn trên sẽ trả về đầu ra sau
Tại đây, MatchedCount chứa số lượng tài liệu phù hợp với bộ lọc, trong khi ModifiedCount chứa số lượng tài liệu đã sửa đổi 5. Mã trình điều khiển JavaCho đến giờ, chúng ta đã thảo luận về truy vấn shell mongo để sử dụng toán tử $push và $set cùng nhau. Ở đây, chúng ta sẽ học cách triển khai tương tự bằng cách sử dụng mã trình điều khiển Java Trước khi tiếp tục, trước tiên hãy kết nối với DB và bộ sưu tập cần thiết
Ở đây, chúng tôi đang kết nối với MongoDB, đang chạy ở cổng mặc định cổng 27017 trên localhost Bây giờ chúng ta hãy xem mã trình điều khiển Java
Trong đoạn mã này, chúng tôi đã sử dụng phương thức updateOne, phương thức này chỉ cập nhật một tài liệu duy nhất dựa trên bộ lọc studentId được áp dụng 1023. Sau đó, chúng tôi đã sử dụng Bản cập nhật. kết hợp để thực hiện nhiều thao tác trong một cuộc gọi. Trường totalMarks sẽ được cập nhật thành 170 và một chủ đề tài liệu mớiDữ liệu sẽ được đẩy vào trường mảng “subjectDetails” 6. Sự kết luậnTrong bài viết này, chúng ta đã hiểu trường hợp sử dụng của việc áp dụng nhiều thao tác cùng nhau trong một truy vấn MongoDB duy nhất. Hơn nữa, chúng tôi đã thực hiện tương tự bằng cách sử dụng truy vấn trình bao MongoDB và mã trình điều khiển Java Sự khác biệt giữa addToSet và đẩy trong MongoDB là gì?Sự khác biệt
. If the value already exists in the array, $push will still append the value (resulting in duplicate values). Tuy nhiên, $addToSet chỉ nối thêm giá trị nếu nó chưa tồn tại trong mảng. Do đó, nếu giá trị đã tồn tại, $addToSet sẽ không nối thêm giá trị đó (nó sẽ không làm gì cả).
Việc sử dụng addToSet trong MongoDB là gì?Toán tử $addToSet thêm một giá trị vào một mảng trừ khi giá trị đó đã có sẵn , trong trường hợp đó $addToSet không làm gì với mảng đó. Toán tử $addToSet có dạng. { $addToSet. {
Làm cách nào để lấy nhiều giá trị trong MongoDB?MongoDB cung cấp hàm find() được sử dụng để tìm nhiều giá trị hoặc tài liệu từ bộ sưu tập. Phương thức find() trả về một con trỏ của tập kết quả và in tất cả các tài liệu. Để tìm nhiều giá trị, chúng ta có thể sử dụng các thao tác tổng hợp do chính MongoDB cung cấp .
$addToSet là gì?$addToSet trả về một mảng gồm tất cả các giá trị duy nhất có được từ việc áp dụng một biểu thức cho mỗi tài liệu trong một nhóm . Thứ tự của các phần tử trong mảng được trả về là không xác định. $addToSet có sẵn trong các giai đoạn này. $bucket. |