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" } }
]
3db.products.update[
{ _id: 1 },
{ $pull: { sizes: "XXL" } }
]
4Bấ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ố 8Truy 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},
]
}
]
}
0Chú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},
]
}
]
}
1Sau đó, 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ủ
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" } }
]
2Cậ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" } }
]
3Bâ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" } }
]
4Hãy để chúng tôi thực hiện truy vấn dưới đây
db.products.update[
{ _id: 1 },
{ $pull: { sizes: "XXL" } }
]
5Bướ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" } }
]
6Hãy để chúng tôi thực hiện truy vấn dưới đây
db.products.update[
{ _id: 1 },
{ $pull: { sizes: "XXL" } }
]
7Sau đó 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" } }
]
8Nhì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" } }
]
9Bâ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" ] }
1Chú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" ] }
2Bâ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" ] }
3Sau đó, 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" ] }
4Chú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" ] }
5Bâ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" ] }
6Chú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
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