Kéo hoạt động như thế nào trong MongoDB?

Sử dụng

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
8 kết hợp với một phương pháp như
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
0 để cập nhật tài liệu được chỉ định với sự thay đổi

Ví dụ

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

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
1 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" } } 
)

đầ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 phù hợp và một (i. e. 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" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

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

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
2 theo quy định

Xóa nhiều giá trị

Chúng ta có thể sử dụng toán tử

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
3 để chỉ định nhiều giá trị mà chúng ta muốn xóa khỏi mảng

Ví dụ

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

đầu ra

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

Bây giờ hãy kiểm tra lại bộ sưu tập

db.products.find()

Kết quả

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

Chúng ta có thể thấy rằng hai phần tử được chỉ định đã bị xóa khỏi mảng trong tài liệu 3

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

Bạn có thể thêm

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
4 hoặc sử dụng phương pháp
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
5 để cập nhật tất cả các tài liệu phù hợp với tiêu chí

Khi bạn thực hiện việc này, hãy xóa mọi tiêu chí lựa chọn khỏi tài liệu truy vấn đầu tiên (chỉ định (các) tài liệu nào sẽ cập nhật). Nói cách khác, sử dụng một tài liệu trống làm đối số đầu tiên cho phương thức

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
6 (hoặc
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
7)

Ví dụ

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

đầu ra

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

Trong trường hợp này, chúng ta có thể thấy rằng ba tài liệu phù hợp (vì có ba tài liệu trong bộ sưu tập), nhưng chỉ có hai tài liệu được sửa đổi (vì chỉ có hai tài liệu có giá trị

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
8 trong mảng
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
9)

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

db.products.find()

Kết quả

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

Chúng ta có thể thấy rằng tất cả các phiên bản của

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
8 đã bị xóa khỏi tất cả các tài liệu trong bộ sưu tập

Mảng tài liệu

Nếu bạn có mảng chứa tài liệu làm thành phần của chúng, bạn có thể xóa bất kỳ tài liệu nào trong số đó bằng cách chỉ định tiêu chí khớp với dữ liệu trong tài liệu

Giả sử chúng ta có một bộ sưu tập có tên là các nhà hàng mà các tài liệu sau

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

Trong trường hợp này, trường có tên là

db.products.find()
1 chứa một mảng tài liệu. Mỗi tài liệu là một đánh giá khác nhau về nhà hàng được đề cập

Chúng tôi có thể sử dụng

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
8 để xóa các đánh giá phù hợp với một tiêu chí nhất định

Ví dụ

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

đầu ra

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

Thông báo này cho chúng tôi biết rằng ba tài liệu phù hợp với tiêu chí truy vấn (vì chúng tôi đã chọn tất cả tài liệu) và hai tài liệu đã được sửa đổi (vì hai tài liệu phù hợp với tiêu chí

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)
8 của chúng tôi)

Hãy kiểm tra lại bộ sưu tập để xem hiệu quả

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

Kết quả

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

Chúng ta có thể thấy rằng chỉ còn lại các bài đánh giá có xếp hạng từ 4 trở lên. Tất cả các đánh giá dưới 4 đã bị xóa

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

La bà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 để lấy dữ liệu từ mảng trong MongoDB?

Để tìm kiếm mảng đối tượng trong MongoDB, bạn có thể sử dụng toán tử $elemMatch . Toán tử này cho phép chúng ta tìm kiếm nhiều hơn một thành phần từ một đối tượng mảng.

Làm cách nào để sử dụng $push trong MongoDB?

Nếu trường không có trong tài liệu cần cập nhật, $push sẽ thêm trường mảng có giá trị làm thành phần của nó . Nếu trường không phải là một mảng, hoạt động sẽ thất bại. Nếu giá trị là một mảng, $push sẽ thêm toàn bộ mảng dưới dạng một phần tử. Để thêm riêng từng phần tử của giá trị, hãy sử dụng công cụ sửa đổi $each với $push.

Làm cách nào để xóa giá trị khỏi MongoDB?

Trình vỏ MongoDB cung cấp các phương thức sau để xóa tài liệu khỏi bộ sưu tập. .
Để xóa nhiều tài liệu, hãy sử dụng db. thu thập. xóaMany()
Để xóa một tài liệu, hãy sử dụng db. thu thập. xóaOne()