MongoDB Java kéo từ mảng
Toán tử $push và $pull là một phần của toán tử mảng được thiết kế để sửa đổi mảng trong tài liệu MongoDB. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách hoạt động của các toán tử đẩy và kéo cũng như cách sử dụng chúng với các điều kiện và bổ trợ bổ sung Show
(Bài viết này là một phần của Hướng dẫn MongoDB của chúng tôi. Sử dụng menu bên phải để điều hướng. ) Toán tử đẩy và kéo là gì?Đẩy và kéo là hai thao tác được sử dụng để thêm và xóa các phần tử khỏi mảng trong tài liệu MongoDB. Việc đẩy và kéo các phần tử được thực hiện bằng cách sử dụng các toán tử $push và $pull của MongoDB, tương ứng
Cú pháp cơ bản của toán tử $push{ $push: { Cú pháp cơ bản của toán tử $pull{ $pull: { Hãy xem xét từng chi tiết hơn, bao gồm cách chúng hoạt động và cách bạn có thể sử dụng chúng Cách hoạt động của toán tử MongoDB $pushBạn có thể thấy toán tử $push nhận hai đối số
Nếu trường mảng không có trong tài liệu, toán tử $push sẽ tạo một trường mảng mới. Tuy nhiên, nếu trường được chỉ định không phải là một mảng, MongoDB sẽ trả về lỗi công cụ sửa đổi toán tử $pushChức năng của toán tử $push có thể được mở rộng hơn nữa bằng cách sử dụng các công cụ sửa đổi sau
Hoạt động $push được thực hiện theo thứ tự sau, bất kể thứ tự mà các công cụ sửa đổi được xác định
Tiếp theo, chúng ta sẽ xem xét cách chúng ta có thể sử dụng các hoạt động $push của MongoDB để thao tác với tài liệu. Tôi sẽ đưa ra một vài ví dụ, vì vậy hãy chuyển đến ví dụ bạn cần Đối với tập dữ liệu cơ sở cho những ví dụ này, tôi sẽ sử dụng bộ sưu tập “vehicledetails” db.vehicledetails.find().pretty() Kết quả Nối một giá trị duy nhất vào một mảngHãy cho chúng tôi xem cách chúng tôi có thể nối thêm một giá trị vào một mảng khi có trường mảng và trường đó không có. Trong tất cả các ví dụ, trường “_id” được sử dụng để cho biết mảng nào sẽ được thêm vào tài liệu nào Thí dụ. Không có trường mảng Một trường mảng mới sẽ được tạo với tên trường được chỉ định trong toán tử $push db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"vehicle_colours": "red"}}) Kết quả Thí dụ. Khi trường mảng có mặt Mục mới sẽ được thêm vào cuối mảng db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"vehicle_colours": "green"}}) Kết quả Nếu chúng tôi cố gắng sử dụng toán tử $push cho trường không phải mảng, nó sẽ dẫn đến lỗi. Đoạn mã sau trả về lỗi khi chúng tôi đang cố nối thêm một giá trị vào trường không phải mảng “make” db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"make": "green"}}) Kết quả Nối nhiều giá trị vào một mảngBạn có thể nối nhiều giá trị vào một mảng có hoặc không có công cụ sửa đổi $each Thí dụ. Nhiều giá trị không có công cụ sửa đổi $each Nếu không có công cụ sửa đổi $each, MongoDB sẽ nối tất cả các giá trị dưới dạng một giá trị vào trường mảng đã chỉ định db.vehicledetails.update({"_id": ObjectId("5fbc52f55f9a62418038240e")}, {$push: {"vehicle_colours": ["blue", "red", "yellow"]}}) Kết quả Tại đây, bạn có thể thấy “xanh dương”, “đỏ” và “vàng” là các phần tử của một mảng mới được tạo. Nhưng mảng đó chỉ là một phần tử của mảng “vehical_colors” Thí dụ. Nhiều giá trị với công cụ sửa đổi $each Khi một thao tác $push được xác định bằng công cụ sửa đổi $each, mỗi phần tử trong thao tác $push sẽ được thêm vào mảng dưới dạng các mục riêng lẻ db.vehicledetails.update({"_id": ObjectId("5fbc52f55f9a62418038240e")}, {$push: {"vehicle_colours": { $each :["blue", "red", "yellow"]}}}) Kết quả Ở đây, “vehicle_colors” có ba thành phần sau thao tác $push Sử dụng Công cụ sửa đổi $sort và $sliceTrong phần này, chúng tôi sẽ trình bày cách sử dụng các công cụ sửa đổi $sort và $slice bằng cách sử dụng tài liệu sau đây trong bộ sưu tập “vehicledetails” Hãy để chúng tôi thêm màu “bạc” vào trường mảng “vehicle_colours” và sắp xếp nội dung theo thứ tự bảng chữ cái (thứ tự tăng dần) ________số 8_______Kết quả Đầu ra ở trên cho chúng ta thấy rằng các màu mới đã được thêm vào và mảng đã được sắp xếp theo thứ tự bảng chữ cái. Trong ví dụ sau, chúng ta sẽ thêm màu “xanh đậm” vào trường mảng trong khi sắp xếp theo thứ tự bảng chữ cái và sử dụng công cụ sửa đổi $slice để giới hạn mảng ở 5 phần tử db.vehicledetails.update({"_id": ObjectId("5fbc52fb5f9a62418038240f")}, {$push: {"vehicle_colours": { $each :["dark blue"], $sort: 1, $slice: 5}}}) Kết quả Sử dụng công cụ sửa đổi vị trí $Công cụ sửa đổi vị trí $ được sử dụng để chỉ định vị trí trong mảng nơi mục mới sẽ được thêm vào. Điều này sẽ ghi đè hành vi mặc định của việc thêm các mục vào cuối mảng Trong ví dụ sau, chúng ta sẽ thêm màu “white” vào đầu trường mảng “vehicle_colours”. Trong công cụ sửa đổi “$position”, số không (0) được sử dụng để chỉ vị trí đầu tiên (chỉ số 0) của mảng { $pull: {0 Kết quả Cách hoạt động của toán tử MongoDB $pullToán tử $pull được sử dụng để xóa tất cả các phiên bản của một hoặc nhiều giá trị khỏi tài liệu MongoDB khớp với một điều kiện đã chỉ định. Nếu một mảng chứa các tài liệu được nhúng hoặc lồng nhau, thì điều kiện toán tử $pull đã chỉ định sẽ được áp dụng cho từng phần tử mảng như thể mỗi phần tử mảng là một tài liệu trong một bộ sưu tập Khi giá trị được chỉ định bị xóa là một mảng, toán tử $pull chỉ xóa các phần tử trong mảng khớp với giá trị chính xác được chỉ định, bao gồm cả thứ tự xác định các phần tử. Nếu giá trị được chỉ định cần xóa là một tài liệu, toán tử $pull sẽ xóa các phần tử khớp với các trường và giá trị được chỉ định. Trong trường hợp này, thứ tự các trường bị loại bỏ Bây giờ tôi sẽ hướng dẫn bạn một vài ví dụ về toán tử $pull. Chuyển đến những cái bạn cần Trong các ví dụ này, chúng tôi sẽ sử dụng tập dữ liệu sau để chứng minh Loại bỏ một mục duy nhất khỏi một mảngỞ đây, chúng tôi sẽ xóa giá trị duy nhất “2018” khỏi trường mảng “model_year”. Trường “_id” được sử dụng để chỉ ra tài liệu mà thao tác $pull sẽ diễn ra trên đó { $pull: {1 Kết quả Xóa tất cả các mục bằng một giá trị được chỉ địnhTrong ví dụ này, chúng ta sẽ sử dụng bộ sưu tập “vehicledetails” để xóa màu “blue” và “green” khỏi trường mảng “vehicle_colours” và xóa năm mô hình 2020 khỏi trường mảng “model_year” { $pull: {2 Kết quả Xóa các mục phù hợp với Điều kiện $pull đã chỉ địnhSử dụng tập hợp “student_grades”, chúng ta hãy tạo một điều kiện để xóa tất cả các điểm nhỏ hơn hoặc bằng 50 khỏi tài liệu sau Tài liệu chưa sửa đổi Tài liệu sửa đổi { $pull: {3 Kết quả Điều kiện xác định ({$lte. 50}) đã xóa bất kỳ mục nào nhỏ hơn hoặc bằng 50 trong trường mảng "điểm" Xóa các mục khỏi một mảng tài liệuTrong ví dụ này, chúng tôi sẽ sử dụng bộ sưu tập “student_grades” để xóa tất cả các giá trị nhỏ hơn hoặc bằng 50 trong trường mảng “grades” trong tất cả các tài liệu trong bộ sưu tập Bộ sưu tập chưa sửa đổi Bộ sưu tập đã sửa đổi { $pull: {4 Kết quả Đầu ra ở trên cho chúng ta thấy rằng bất kỳ giá trị nào nhỏ hơn hoặc bằng 50 đã bị xóa khỏi trường mảng “grades” trong tất cả các tài liệu trong bộ sưu tập “student_grades” Làm cách nào để lấy dữ liệu từ mảng trong MongoDB?Để tìm kiếm mảng đối tượng trong MongoDB, bạn có thể sử dụng toán tử $elemMatch . Toán tử này cho phép chúng ta tìm kiếm nhiều hơn một thành phần từ một đối tượng mảng.
Làm cách nào để chèn mảng trong MongoDB bằng Java?Trình điều khiển Java MongoDB hỗ trợ cả tài liệu DBObject và BSON. . insert() – Chèn một tài liệu hoặc nhiều tài liệu vào một bộ sưu tập insertOne() – Chèn một tài liệu vào một bộ sưu tập insertMany() – Chèn nhiều tài liệu vào một bộ sưu tập Làm cách nào để sử dụng $push trong MongoDB?Nếu trường không có trong tài liệu cần cập nhật, $push sẽ thêm trường mảng có giá trị làm thành phần của nó . Nếu trường không phải là một mảng, hoạt động sẽ thất bại. Nếu giá trị là một mảng, $push sẽ thêm toàn bộ mảng dưới dạng một phần tử. Để thêm riêng từng phần tử của giá trị, hãy sử dụng công cụ sửa đổi $each với $push.
Làm cách nào để cập nhật mảng trong MongoDB Java?Bạn có thể sử dụng các phương thức updateOne() hoặc updateMany() để thêm, cập nhật hoặc xóa các phần tử mảng dựa trên các tiêu chí đã chỉ định . Nên sử dụng phương thức updateMany() để cập nhật nhiều mảng trong một bộ sưu tập. |