MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

3 cách xóa giá trị khỏi mảng trong MongoDB

MongoDB cung cấp một số toán tử cho phép bạn xóa giá trị khỏi mảng.

Chúng bao gồm:

  • $pull
  • $pullAll
  • $pop

$pull Nhà điều hành

$pull toán tử loại bỏ khỏi một mảng hiện có tất cả các trường hợp của một giá trị hoặc các giá trị phù hợp với một điều kiện được chỉ định.

Giả sử chúng ta có một bộ sưu tập được gọi là products 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ư sau:

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 XXL đã bị xóa khỏi tài liệu 1 như được chỉ đị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" ] }

$pullAll Nhà điều hành

$pullAll toán tử loại bỏ tất cả các trường hợp của các giá trị được 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 7 từ mảng trong tài liệu 1.

Chúng tôi có thể làm điều này:

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

Đ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.foo.find()

Kết quả:

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

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

Trong khi $pullAll tương tự như $pull , sự khác biệt là $pullAll loại bỏ các phần tử phù hợp với các giá trị được liệt kê. Điều này không giống như $pull , nơi bạn xóa các giá trị bằng cách chỉ định một truy vấn.

$pop Nhà điều hành

$pop toán tử loại bỏ phần tử đầu tiên hoặc cuối cùng của một mảng.

Cung cấp giá trị -1 để xóa phần tử đầu tiên và 1 để loại bỏ cuối cùng.

Giả sử chúng ta có một bộ sưu tập được gọi là products với các tài liệu sau:

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

Đoạn mã sau xóa phần tử cuối cùng khỏi mảng trong tài liệu 1:

db.products.update( 
  { _id: 2 }, 
  { $pop: { sizes: 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.find()

Kết quả:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhập tệp JSON vào MongoDB với mongoimport

  2. MongoDB $ hàng tuầnUpdate # 65 (ngày 15 tháng 4 năm 2022):GDELT, Mongoose và Giờ Hackathon!

  3. 10 mẹo để cải thiện bảo mật MongoDB của bạn

  4. MongoDB, Mongoose:Làm cách nào để tìm tài liệu phụ trong tài liệu đã tìm thấy?

  5. Mongodb dữ liệu mùa xuân - Tùy chọn 'con trỏ' là bắt buộc