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

MongoDB $ pop

Trong MongoDB, bạn có thể sử dụng $pop toán tử để xóa phần tử đầu tiên hoặc cuối cùng khỏi một mảng.

Sử dụng $pop kết hợp với một phương thức như update() để cập nhật tài liệu được chỉ định với sự thay đổi.

Sử dụng -1 để xóa phần tử đầu tiên và 1 để loại bỏ cuối cùng.

Ví dụ

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", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Xóa phần tử đầu tiên

Chúng ta có thể xóa phần tử đầu tiên của mảng trong tài liệu 1 như sau:

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

Đầu ra:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Thông báo đó cho chúng tôi biết rằng một tài liệu đã khớp và một tài liệu (tức là cùng một tài liệu) đã được sửa đổi.

Bây giờ chúng ta hãy xem 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", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Chúng ta có thể thấy rằng phần tử đầu tiên của mảng trong tài liệu 1 đã bị xóa.

Xóa phần tử cuối cùng

Bây giờ chúng ta hãy xóa phần tử cuối cùng khỏi mảng trong tài liệu 2:

db.products.update( 
  { _id: 2 }, 
  { $pop: { sizes: 1 } } 
)

Đầu ra:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Bây giờ chúng ta hãy kiểm tra lại 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" ] }

Chúng ta có thể thấy rằng phần tử cuối cùng đã bị xóa khỏi mảng trong tài liệu 2.

Cập nhật tất cả tài liệu

Đây là một ví dụ sử dụng updateMany() phương pháp cập nhật tất cả các tài liệu:

db.products.updateMany( 
  { }, 
  { $pop: { sizes: 1 } } 
)

Đầu ra:

{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }

Và kiểm tra lại bộ sưu tập:

db.products.find()

Kết quả:

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

Ngoài ra, bạn có thể sử dụng update() phương pháp cập nhật nhiều tài liệu bằng cách chỉ định multi: true .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tạo bộ sưu tập Meteor mới một cách nhanh chóng

  2. MongoDB như một dịch vụ hàng đợi?

  3. Id đối tượng Mongo DB deserializing sử dụng trình tuần tự JSON

  4. Đối tượng tài liệu MongoEngine được tạo bằng from_json không lưu

  5. Node.js + mongoose tìm thấy nút bị đóng băng khi có hơn 100 kết quả