Mongodb xóa phần tử khỏi mảng theo chỉ mục

Toán tử

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
6 loại bỏ khỏi một mảng hiện có tất cả các phiên bản của một giá trị hoặc các giá trị khớp với một điều kiện đã chỉ định

Giả sử chúng ta có một bộ sưu tập tên là

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
7 với các tài liệu sau

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Chúng ta có thể xóa một phần tử khỏi mảng trong tài liệu 1 như thế này

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)

Bây giờ khi chúng tôi kiểm tra bộ sưu tập, chúng tôi có thể thấy rằng

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
8 đã bị xóa khỏi tài liệu 1 theo quy định

db.products.find()

Kết quả

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Toán tử db.products.update( { _id: 1 }, { $pull: { sizes: "XXL" } } )3

Toán tử 

db.products.find()
0 xóa tất cả các trường hợp của các giá trị đã chỉ định khỏi mảng

Giả sử chúng ta có một bộ sưu tập với các tài liệu sau

{ "_id" : 1, "bar" : [ 1, 7, 2, 3, 8, 7, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

Và chúng tôi muốn xóa tất cả các giá trị của

db.products.find()
1 khỏi mảng trong tài liệu 1

Chung ta co thể lam được việc nay

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
1

Điều này loại bỏ cả hai lần xuất hiện của 7 khỏi mảng trong tài liệu 1

Chúng tôi có thể xác minh điều này bằng cách kiểm tra bộ sưu tập

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
2

Kết quả

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
3

Chúng ta có thể thấy rằng mảng trong tài liệu 1 đã bị xóa tất cả các giá trị

db.products.find()
1 theo quy định

Mặc dù

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
3 tương tự như
db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
2 nhưng điểm khác biệt là
db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
3 xóa các phần tử khớp với các giá trị được liệt kê. Điều này không giống như
db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
2, nơi bạn loại bỏ các giá trị bằng cách chỉ định một truy vấn

Cú pháp trên sẽ đặt một giá trị null tại vị trí của 'yourIndexValue'. Sau đó, bạn cần kéo giá trị null từ trường mảng để xóa khỏi phần tử mảng

Bước thứ hai như sau -

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
9

Để thực hiện cú pháp, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

Để xóa phần tử mảng theo chỉ mục của nó trong MongoDB, bạn có thể sử dụng toán tử $unset và $pull. Có hai bước để loại bỏ các phần tử mảng khỏi một mảng. Cú pháp cho giống như sau

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
0

Để hiểu cú pháp trên, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với tài liệu như sau

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
1

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find(). Truy vấn như sau

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
2

Sau đây là đầu ra

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
3

Đây là truy vấn để loại bỏ phần tử mảng theo chỉ mục của nó

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
4

Ở trên, chúng tôi đã xóa phần tử mảng “MongoDB”, ở chỉ mục 3. Hãy để chúng tôi hiển thị tài liệu từ một bộ sưu tập. Truy vấn như sau

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
2

Sau đây là đầu ra

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
6

Nhìn vào đầu ra mẫu ở trên, chỉ số 3 i. e. vị trí 4 đã bị xóa khỏi mảng i. e. phần tử “MongoDB”

Làm cách nào bạn có thể xóa một phần tử tại một chỉ mục cụ thể trong một mảng?

Kết hợp các phương thức indexOf() và splice() . Sau đó sử dụng phương thức splice() để xóa phần tử tại chỉ mục được trả về.

Làm cách nào để xóa phần tử khỏi mảng theo giá trị trong MongoDB?

Để xóa phần tử, hãy cập nhật và sử dụng $pull trong MongoDB. Toán tử $pull loại bỏ khỏi một mảng hiện có tất cả các phiên bản của một giá trị hoặc các giá trị khớp với một điều kiện đã chỉ định.

Làm cách nào để xóa phần tử đầu tiên của mảng trong MongoDB?

Toán tử $pop loại bỏ phần tử đầu tiên hoặc cuối cùng của một mảng. Truyền $pop giá trị -1 để xóa phần tử đầu tiên của mảng và 1 để xóa phần tử cuối cùng trong mảng.