Mongodb kéo mảng từ mảng

Giả sử tôi có một bộ sưu tập giống như thế này (về cơ bản là một mảng chứa các đối tượng lồng nhau)

{ 
  'customer': 'bob',
  'products': [
   {
     'id': 5,
     'variants': [
       {'name': 'blue',
       'id': 23},
       {'name': 'orange',
       'id': 13},
       {'name': 'green',
       'id': 53},
      ]    
   }
  ]
},
{ 
  'customer': 'dylan',
  'products': [
   {
     'id': 5,
     'variants': [
       {'name': 'blue',
       'id': 23},
       {'name': 'green',
       'id': 53},
      ]    
   }
  ]
}

Tôi muốn xóa tất cả

db.product.insertMany([
{ "_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" ] }
])
9 có
db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
0 sau đây.
db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
1 chỉ dành cho
db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
2

{ 
  'customer': 'bob',
  'products': [
   {
     'id': 5,
     'variants': [ 
       {'name': 'orange',
       'id': 13}, 
      ]    
   }
  ]
},
{ 
  'customer': 'dylan',
  'products': [
   {
     'id': 5,
     'variants': [
       {'name': 'blue',
       'id': 23},
       {'name': 'green',
       'id': 53},
      ]    
   }
  ]
}

Tôi có những thứ sau đây, tuy nhiên nó cũng xóa tất cả các biến thể cho

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

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

Bất kỳ ý tưởng về cách tiếp cận này?

Trong hướng dẫn MongoDB này, chúng ta sẽ tìm hiểu “MongoDB xóa một phần tử khỏi một mảng”. Chúng tôi sẽ đề cập đến chủ đề này với các hoạt động và ví dụ khác nhau. Đây là những chủ đề sau đây mà chúng ta sẽ đề cập trong hướng dẫn này

  • Cách xóa phần tử khỏi mảng trong mongodb
  • MongoDB xóa một phần tử khỏi mảng theo id
  • MongoDB xóa một phần tử khỏi chỉ mục mảng
  • MongoDB xóa phần tử cuối cùng khỏi mảng
  • MongoDB xóa một phần tử khỏi một mảng lồng nhau
  • MongoDB xóa nhiều phần tử khỏi mảng

Mục lục

  • Xóa phần tử khỏi mảng trong mongodb
  • MongoDB xóa một phần tử khỏi mảng theo id
  • MongoDB xóa một phần tử khỏi chỉ mục mảng
  • MongoDB xóa phần tử cuối cùng khỏi mảng
  • MongoDB xóa một phần tử khỏi một mảng lồng nhau
  • MongoDB xóa nhiều phần tử khỏi mảng

Xóa phần tử khỏi mảng trong mongodb

MongoDB cung cấp các toán tử sau để xóa phần tử khỏi mảng. Các nhà khai thác là

  • kéo $
  • $pullAll
  • $pop

Bây giờ, chúng ta sẽ tìm hiểu chi tiết tất cả các toán tử này với các ví dụ

Toán tử $pull. Toán tử $pull xóa một phần tử khỏi một mảng hiện có khớp với một điều kiện đã chỉ định

Giả sử, chúng tôi có một bộ sưu tập được gọi là sản phẩm với các tài liệu sau

db.product.insertMany([
{ "_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 bằng truy vấn sau

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

Ở đây, chúng tôi đã sử dụng phương thức update() và xác định toán tử $pull để xóa phần tử XXL trong đó _id là 1. Sau đó, bạn có thể sử dụng phương thức find() để lấy tất cả các tài liệu

db.product.find()
{ "_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" ] }

Chúng tôi đã xóa thành công một phần tử khỏi mảng

Toán tử $pullAll. Toán tử $pullAll xóa tất cả các phần tử khỏi mảng đã xác định

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

db.demo.insertMany([
{ "_id" : 1, "bar" : [ 1, 8, 2, 3, 8, 7, 1 ] },
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] },
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
])

Bây giờ, hãy sử dụng truy vấn sau để xóa tất cả các giá trị của 8 khỏi mảng trong đó _id là 1

db.demo.update( 
  { _id: 1 }, 
  { $pullAll: { bar: [ 8 ] } } 
)

Chúng ta có thể xác minh điều này bằng cách kiểm tra bộ sưu tập bằng phương thức find()

db.demo.find()
{ "_id" : 1, "bar" : [ 1, 2, 3, 7, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

Chúng tôi đã xóa thành công phần tử 8 khỏi mảng trong tài liệu 1

Ghi chú

Toán tử $pullAll tương tự như $pull. Sự khác biệt là $pullAll xóa các phần tử khớp với các giá trị được liệt kê. Và, toán tử $pull xóa các giá trị bằng cách chỉ định một truy vấn

Toán tử $pop. Toán tử $pop được sử dụng để loại bỏ phần tử đầu tiên hoặc cuối cùng của một mảng. Nó cung cấp giá trị -1 để xóa phần tử đầu tiên và 1 để xóa phần tử cuối cùng của mảng

Giả sử, chúng tôi có một bộ sưu tập được gọi là kiểm tra với các tài liệu sau

________số 8

Truy vấn sau sẽ loại bỏ phần tử đầu tiên của mảng trong tài liệu 3

db.test.update( 
  { _id: 3 }, 
  { $pop: { sizes: -1 } } 
)

Chúng ta có thể xác minh điều này bằng cách kiểm tra bộ sưu tập bằng phương thức find()

{ 
  'customer': 'bob',
  'products': [
   {
     'id': 5,
     'variants': [ 
       {'name': 'orange',
       'id': 13}, 
      ]    
   }
  ]
},
{ 
  'customer': 'dylan',
  'products': [
   {
     'id': 5,
     'variants': [
       {'name': 'blue',
       'id': 23},
       {'name': 'green',
       'id': 53},
      ]    
   }
  ]
}
0

Chúng tôi đã xóa thành công phần tử đầu tiên khỏi mảng trong tài liệu 3

  • Cách thay đổi tên bộ sưu tập trong MongoDB

MongoDB xóa một phần tử khỏi mảng theo id

Trong chủ đề này, chúng ta sẽ học cách xóa một phần tử khỏi mảng theo id. Ở đây, mảng theo id có nghĩa là loại bỏ một phần tử mảng id cụ thể. Chúng ta sẽ sử dụng toán tử $pull trong phương thức update() để xóa phần tử khỏi mảng. Hãy để chúng tôi hiểu với sự giúp đỡ của một ví dụ

Ví dụ

Các tài liệu tiếp theo đã được chèn vào bộ sưu tập cửa hàng

{ 
  'customer': 'bob',
  'products': [
   {
     'id': 5,
     'variants': [ 
       {'name': 'orange',
       'id': 13}, 
      ]    
   }
  ]
},
{ 
  'customer': 'dylan',
  'products': [
   {
     'id': 5,
     'variants': [
       {'name': 'blue',
       'id': 23},
       {'name': 'green',
       'id': 53},
      ]    
   }
  ]
}
1

Sau đó, chúng ta sẽ áp dụng truy vấn sau để xóa một phần tử khỏi mảng

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

Ở đây, chúng tôi đã chỉ định id 2 vì vậy trong id 2, toán tử $pull sẽ loại bỏ táo và cam khỏi mảng trái cây và loại bỏ cà rốt khỏi mảng rau củ

Mongodb kéo mảng từ mảng
Mongodb kéo mảng từ mảng
MongoDB xóa một phần tử khỏi mảng

Chúng ta có thể xác minh điều này bằng cách kiểm tra bộ sưu tập bằng phương thức find()

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

Đọc MongoDB tìm tài liệu được chèn lần cuối

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

Không có cách chính xác để kéo hoặc loại bỏ một phần tử theo chỉ số mảng. Đây là một vấn đề mở http. //jira. mongodb. org/duyệt/SERVER-1014

Lỗ hổng đang sử dụng $unset và sau đó là $pull

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

Cập nhật. Cách tiếp cận này không phải là nguyên tử và có thể gây ra một số loại điều kiện nếu các máy khách khác đọc và/hoặc ghi giữa hai thao tác. Nếu chúng ta muốn hoạt động là nguyên tử, chúng ta có thể

  • Đọc tài liệu từ cơ sở dữ liệu
  • Cập nhật tài liệu và xóa mục trong mảng
  • Thay thế tài liệu trong cơ sở dữ liệu.  

Nếu bạn sử dụng phương pháp trên để loại bỏ một phần tử mảng theo chỉ mục của nó thì cách này hoạt động

Ví dụ

Tài liệu sau đây đã được chèn vào bộ sưu tập thông tin

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

Bây giờ, chúng ta sẽ áp dụng hai truy vấn để loại bỏ một phần tử mảng theo chỉ số của nó

Bước 1. Áp dụng toán tử $unset để đặt giá trị null tại vị trí của “YourIndexValue”

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

Hãy để chúng tôi thực hiện truy vấn dưới đây

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

Bước 2. Toán tử $pull được sử dụng để lấy giá trị null từ mảng để xóa nó khỏi phần tử mảng

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

Hãy để chúng tôi thực hiện truy vấn dưới đây

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

Sau đó kiểm tra phần tử mảng “Java” đã bị xóa hay chưa. Truy vấn như sau

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

Mongodb kéo mảng từ mảng
Mongodb kéo mảng từ mảng
MongoDB xóa một phần tử khỏi chỉ mục mảng

Nhìn vào kết quả, chúng ta đã loại bỏ thành công phần tử mảng “Java”

Đọc thứ tự MongoDB theo ngày

MongoDB xóa phần tử cuối cùng khỏi mảng

Trong chủ đề này, bạn sẽ học cách xóa phần tử cuối cùng khỏi mảng. Để làm được điều đó, chúng ta sẽ sử dụng toán tử $pop để xóa phần tử cuối cùng khỏi mảng. Nó cung cấp giá trị -1 để xóa phần tử đầu tiên và 1 để xóa phần tử cuối cùng của mảng

Vì vậy, ở đây, chúng ta sẽ sử dụng 1 để loại bỏ phần tử cuối cùng của một mảng. Hãy hiểu với sự giúp đỡ của một ví dụ

Ví dụ

Các tài liệu sau đã được chèn vào bộ sưu tập cửa hàng

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

Bây giờ, chúng ta sẽ áp dụng truy vấn dưới đây để xóa phần tử cuối cùng khỏi mảng

db.product.find()
{ "_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" ] }
0

Ở đây, chúng tôi đã áp dụng toán tử $pop với giá trị 1 để xóa phần tử cuối cùng khỏi tài liệu 1 mảng fruit

Sau đó, kiểm tra phần tử mảng để lấy tất cả các tài liệu bằng cách sử dụng phương thức find()

db.product.find()
{ "_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" ] }
1

Mongodb kéo mảng từ mảng
Mongodb kéo mảng từ mảng
MongoDB xóa phần tử cuối cùng khỏi mảng

Chúng tôi đã loại bỏ thành công phần tử mảng cuối cùng “nho” khỏi trường trái cây trong tài liệu 1

Đọc MongoDB tìm chuỗi chứa

MongoDB xóa một phần tử khỏi một mảng lồng nhau

Trong chủ đề này, chúng ta sẽ học cách xóa một phần tử khỏi mảng lồng nhau. Chúng ta sẽ sử dụng toán tử $pull để xóa phần tử khỏi mảng lồng nhau. Hãy để chúng tôi hiểu với sự giúp đỡ của một ví dụ

Ví dụ

Các tài liệu sau đây đã được đưa vào bộ sưu tập hàng tồn kho

db.product.find()
{ "_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" ] }
2

Bây giờ, chúng ta sẽ áp dụng truy vấn bên dưới để xóa một phần tử khỏi mảng lồng nhau

db.product.find()
{ "_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" ] }
3

Sau đó, lấy tất cả các tài liệu bằng phương thức find()

db.product.find()
{ "_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" ] }
4

Mongodb kéo mảng từ mảng
Mongodb kéo mảng từ mảng
MongoDB xóa một phần tử khỏi một mảng lồng nhau

Chúng tôi đã xóa thành công phần tử khỏi mảng lồng nhau

Đọc MongoDB tìm nhiều giá trị

MongoDB xóa nhiều phần tử khỏi mảng

Trong chủ đề này, bạn sẽ học cách loại bỏ nhiều phần tử khỏi mảng. Chúng ta sẽ sử dụng toán tử $pullAll để loại bỏ nhiều phần tử khỏi mảng. Hãy để chúng tôi hiểu với sự giúp đỡ của một ví dụ

Ví dụ

Các tài liệu sau đây đã được đưa vào bộ sưu tập sinh viên

db.product.find()
{ "_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" ] }
5

Bây giờ, chúng tôi sẽ áp dụng truy vấn bên dưới để xóa nhiều phần tử khỏi trường thành tích của mảng trong id 1

db.product.find()
{ "_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" ] }
6

Mongodb kéo mảng từ mảng
Mongodb kéo mảng từ mảng
MongoDB xóa nhiều phần tử khỏi mảng

Chúng tôi đã xóa thành công nhiều phần tử khỏi trường đạt được mảng trong đó id là 2

Bạn cũng có thể thích các hướng dẫn MongoDB sau đây

  • Tìm kiếm văn bản MongoDB một phần từ
  • MongoDB xóa một trường khỏi tài liệu
  • MongoDB Auto Increment ID
  • Tạo chỉ mục trong MongoDB
  • Hiển thị dữ liệu MongoDB trong HTML
  • Thiếu câu lệnh trước MongoDB

Vì vậy, trong hướng dẫn này, chúng ta đã học “MongoDB xóa một phần tử khỏi mảng” bằng các cách tiếp cận khác nhau với các ví dụ. Đây là những chủ đề sau mà chúng tôi đã đề cập trong hướng dẫn này

  • MongoDB xóa một phần tử khỏi truy vấn mảng
  • MongoDB xóa một phần tử khỏi mảng theo id
  • MongoDB xóa một phần tử khỏi chỉ mục mảng
  • MongoDB xóa phần tử cuối cùng khỏi mảng
  • MongoDB xóa một phần tử khỏi một mảng lồng nhau
  • MongoDB xóa nhiều phần tử khỏi mảng

Mongodb kéo mảng từ mảng

Bijay

Tôi là Bijay có hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Trong thời gian này, tôi đã làm việc trên MariaDB và sử dụng nó trong rất nhiều dự án. Hầu hết độc giả của chúng tôi đến từ Hoa Kỳ, Canada, Vương quốc Anh, Úc, New Zealand, v.v.

Bạn muốn tìm hiểu MariaDB? . Ngoài ra, tôi là MVP của Microsoft

Làm cách nào để lấy dữ liệu từ mảng trong MongoDB?

Toán tử $pull xóa 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 . Toán tử $pull có dạng. { $kéo. {

Làm cách nào để lấy nhiều giá trị trong MongoDB?

Truy vấn MongoDB tìm nhiều giá trị. .
Nhấp vào nút thả xuống TÙY CHỌN ở bên trái của nút TÌM
Và nó cung cấp nhiều tùy chọn khác nhau có thể thực hiện LỌC, DỰ ÁN, SẮP XẾP và THU THẬP
Bây giờ, chúng tôi xác định hai truy vấn sau và tìm nhiều giá trị từ các tài liệu theo điều kiện

Làm cách nào để khớp giá trị mảng trong MongoDB?

Toán tử $elemMatch khớp với các tài liệu chứa trường mảng có ít nhất một phần tử khớp với tất cả các tiêu chí truy vấn đã chỉ định. Nếu bạn chỉ xác định một điều kiện

Làm cách nào để làm việc với mảng trong MongoDB?

Làm việc với mảng trong MongoDB .
Giới thiệu. .
Tạo và truy vấn tài liệu. .
Thêm một phần tử mảng. .
Cập nhật một phần tử mảng. .
Xóa một phần tử mảng. .
Thêm một Trường mới cho tất cả các Đối tượng trong Mảng. .
Cập nhật một phần tử mảng cụ thể dựa trên một điều kiện. .
Phần kết luận