Mảng đối tượng MongoDB $addToSet

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. {. , } } Để chỉ định một tài liệu được nhúng hoặc trong một mảng, hãy sử dụng ký hiệu dấu chấm

Vì vậy, $addToSet làm cho phần thứ hai trở nên dễ dàng với nhiều mục mảng. Đối với một mục nhập, việc chỉ "truy vấn" và $push khá đơn giản, đối với nhiều mục nhập, có lẽ đây là con đường ngắn hơn để sử dụng mẫu "đầu tiên" với $addToSet và $push một mảng trống để "sắp xếp" kết quả kể từ khi áp dụng

Nếu giá trị của biểu thức là một mảng, $addToSet sẽ nối thêm toàn bộ mảng dưới dạng một phần tử. Nếu giá trị của biểu thức là một tài liệu, MongoDB sẽ xác định rằng tài liệu đó là một bản sao nếu một tài liệu khác trong mảng khớp chính xác với tài liệu sắp thêm vào; . e. tài liệu hiện có có các trường và giá trị giống hệt nhau theo cùng một thứ tự

Hoạt động như một trình giữ chỗ để cập nhật tất cả các phần tử trong một mảng cho các tài liệu khớp với điều kiện truy vấn. $ [] Hoạt động như một trình giữ chỗ để cập nhật tất cả các phần tử khớp với điều kiện của ArrayFilters cho các tài liệu khớp với điều kiện truy vấn. $addToSet

Bước 1) Tạo một biến JavaScript có tên myEmployee để giữ mảng tài liệu. Bước 2) Thêm các tài liệu cần thiết với Tên trường và các giá trị vào biến. Bước 3) Sử dụng lệnh chèn để chèn mảng tài liệu vào bộ sưu tập

Tên Mô tả $ Hoạt động như một trình giữ chỗ để cập nhật phần tử đầu tiên khớp với điều kiện truy vấn. $[] Hoạt động như một trình giữ chỗ để cập nhật tất cả các phần tử trong một mảng cho các tài liệu khớp với điều kiện truy vấn

Nếu tài liệu không chỉ định trường _id thì MongoDB sẽ thêm trường _id và gán một ObjectId duy nhất cho tài liệu trước khi chèn. Hầu hết các trình điều khiển tạo một ObjectId và chèn trường _id, nhưng mongod sẽ tạo và điền _id nếu trình điều khiển hoặc ứng dụng không

Giá trị cần thêm là một tài liệu¶ Nếu giá trị là một tài liệu, MongoDB xác định rằng tài liệu đó là một bản sao nếu một tài liệu hiện có trong mảng khớp chính xác với tài liệu sắp thêm vào; . e. tài liệu hiện có có các trường và giá trị giống hệt nhau và các trường theo cùng một thứ tự. Như vậy, thứ tự trường quan trọng và bạn không thể chỉ định rằng MongoDB chỉ so sánh một tập hợp con của các trường trong tài liệu để xác định xem tài liệu có phải là bản sao của một phần tử mảng hiện có hay không

Thêm mảng phần tử bằng lệnh $Push. Trong MongoDB, chúng ta có thể thêm một phần tử vào mảng bằng lệnh $push. Hãy xem xét tài liệu sau. Các lệnh hiển thị ở trên minh họa cách tạo một bộ sưu tập và một tài liệu có chứa một mảng. Trong ví dụ này, mảng được gọi là phim

Trong MongoDB, toán tử $push được sử dụng để nối một giá trị đã chỉ định vào một mảng. Nếu trường được đề cập không có trong tài liệu để cập nhật, toán tử $push sẽ thêm trường đó dưới dạng trường mới và bao gồm giá trị được đề cập làm thành phần của nó. Nếu trường cập nhật không phải là trường kiểu mảng thì thao tác không thành công

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ả

cú pháp

{ $addToSet: { : , .. } }

Here, can specify with dot notation in embedded/nested documents.

  • Toán tử này không chèn các mục trùng lặp vào mảng và không ảnh hưởng đến các mục trùng lặp đã có sẵn. Ở đây, thứ tự của các giá trị không quan trọng
  • Nếu trường được chỉ định trong toán tử $addToSet không có trong tài liệu, thì toán tử này sẽ tạo một trường mảng trong tài liệu với các giá trị hoặc mục
  • Giá trị được chỉ định có phải là một mảng trong toán tử $addToSet không, thì toán tử này sẽ nối toàn bộ mảng dưới dạng một mục. Hoặc nếu bạn muốn thêm các mục riêng biệt trong mảng, thì hãy sử dụng công cụ sửa đổi $each
  • Toán tử này không hoạt động với các trường không phải mảng
  • Nếu giá trị là một tài liệu, thì MongoDB sẽ kiểm tra xem tài liệu có tồn tại hay không trong mảng. Nếu tài liệu đã chỉ định chứa cùng một trường và giá trị và thứ tự của trường cũng giống như tài liệu hiện có, thì tài liệu đã chỉ định là một tài liệu trùng lặp do đó toán tử $addToSet không thêm các tài liệu đó vào mảng
  • Bạn có thể sử dụng toán tử này với các phương thức như update(), findAndModify(), v.v. , theo yêu cầu của bạn

Trong các ví dụ sau, chúng tôi đang làm việc với

Cơ sở dữ liệu. GeeksforGeeks
Bộ sưu tập. cộng tác viên
Tài liệu. hai tài liệu chứa thông tin chi tiết về người đóng góp ở dạng cặp trường-giá trị.

Thêm giá trị vào một mảng

Trong 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

Làm cách nào để cập nhật mảng của mảng trong MongoDB?

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 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.

Làm cách nào để cập nhật mảng đối tượng trong MongoDB?

Kết hợp nhiều phần tử mảng . Toán tử vị trí được lọc $[] chỉ định các phần tử mảng phù hợp trong tài liệu cập nhật. use the filtered positional operator $[] . The filtered positional operator $[] specifies the matching array elements in the update document.

Làm cách nào để cập nhật mảng đối tượng lồng nhau trong MongoDB?

Cập nhật mảng đối tượng lồng nhau .
db. thu thập. .
Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ định
The filtered positional operator $[] identifies the array elements that match the arrayFilters conditions for an update operation..

Làm cách nào để thêm phần tử vào mảng trong MongoDB?

Nếu giá trị là một mảng, $push sẽ nối 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. Để biết ví dụ, hãy xem Nối giá trị vào mảng trong nhiều tài liệu. Để biết danh sách các công cụ sửa đổi có sẵn cho $push , hãy xem Công cụ sửa đổi.