Các hàm Count() & Remove() trong MongoDB với Ví dụ

⚡ Tóm tắt thông minh

Các hàm Count() và Remove() trong MongoDB Báo cáo số lượng tài liệu trong một bộ sưu tập và xóa tài liệu khỏi bộ sưu tập đó. Phương thức `count()` trả về tổng số tài liệu, trong khi phương thức `remove()` xóa tất cả tài liệu hoặc chỉ những tài liệu đáp ứng điều kiện được chỉ định.

  • 🔢 Đếm số lượng tài liệu: Phương thức count() trả về số lượng tài liệu trong một tập hợp hoặc khớp với một truy vấn.
  • 🎯 Đếm với bộ lọc: Việc truyền điều kiện cho hàm count() chỉ báo cáo những tài liệu thỏa mãn điều kiện đó.
  • 🗑️ Xóa tài liệu: Phương thức remove() xóa các tài liệu, có thể là tất cả hoặc những tài liệu khớp với một đối tượng tiêu chí.
  • 🇧🇷 Loại bỏ một: Tùy chọn justOne giới hạn hàm remove() chỉ xóa một tài liệu phù hợp duy nhất thay vì tất cả các tài liệu phù hợp.
  • 🔄 Phương pháp hiện đại: countDocuments() và deleteMany() hiện là các hàm thay thế cho count() và remove() đã bị loại bỏ.
  • 🖨️ Xác minh đầu ra: Mỗi lệnh sẽ trả về kết quả hiển thị số lượng tài liệu đã bị xóa.

Các hàm Count() & Remove() trong MongoDB

MongoDB Hàm Count()

Khái niệm tổng hợp là thực hiện tính toán trên các kết quả được trả về trong một truy vấn. Ví dụ: giả sử bạn muốn biết số lượng tài liệu trong một bộ sưu tập theo truy vấn được thực hiện thì MongoDB cung cấp hàm count().

Ví dụ về MongoDB Hàm Count()

Hãy xem một ví dụ về điều này.

db.Employee.count()

Code Giải thích:

  • Đoạn mã trên thực thi hàm đếm.

Nếu lệnh được thực hiện thành công, Đầu ra sau sẽ được hiển thị

Đầu ra:

Ví dụ về MongoDB Hàm Count()

Kết quả đầu ra cho thấy rõ ràng có 4 tài liệu trong bộ sưu tập.

MongoDB Đếm với điều kiện truy vấn

Phương thức `count()` hữu ích nhất khi bạn truyền một điều kiện truy vấn, để nó chỉ đếm các tài liệu khớp thay vì toàn bộ tập hợp. Điều này hữu ích cho các báo cáo, chẳng hạn như số lượng nhân viên thuộc một phòng ban hoặc số lượng đơn đặt hàng vẫn đang chờ xử lý.

Ví dụ sau đây đếm số nhân viên có Employeeid lớn hơn 2:

db.Employee.count({Employeeid:{$gt:2}})

Đây là những gì xảy ra:

  • Đối tượng truy vấn {Employeeid:{$gt:2}} hoạt động như một bộ lọc, sử dụng toán tử $gt (lớn hơn).
  • Hàm count() chỉ trả về số lượng tài liệu thỏa mãn bộ lọc.
  • Phần còn lại của bộ sưu tập sẽ không được tính vào tổng số.

Trong hiện tại MongoDB Đối với các phiên bản khác nhau, countDocuments() là phương pháp được khuyến nghị để đếm có điều kiện, vì nó luôn trả về kết quả chính xác. Cùng một truy vấn cũng hoạt động với phương pháp này:

db.Employee.countDocuments({Employeeid:{$gt:2}})

Cả hai lệnh đều trả về một số duy nhất, bạn có thể lưu số đó vào một biến hoặc hiển thị trực tiếp. Việc thêm chỉ mục phù hợp vào trường được truy vấn giúp việc đếm có điều kiện diễn ra nhanh chóng trên các tập dữ liệu lớn.

Thực hiện sửa đổi

Hai lớp hoạt động khác trong MongoDB là các câu lệnh cập nhật và xóa.

Các thao tác cập nhật cho phép một người sửa đổi dữ liệu hiện có và các thao tác xóa cho phép xóa dữ liệu khỏi bộ sưu tập.

Hàm Remove() trong MongoDB

In MongoDB, Các db.collection.remove() phương pháp được sử dụng để xóa tài liệu khỏi bộ sưu tập. Có thể xóa tất cả tài liệu khỏi bộ sưu tập hoặc chỉ những tài liệu phù hợp với một điều kiện cụ thể.

Nếu bạn chỉ đưa ra lệnh xóa, tất cả tài liệu sẽ bị xóa khỏi bộ sưu tập.

Ví dụ về MongoDB Hàm Remove()

Ví dụ mã sau đây minh họa cách xóa một tài liệu cụ thể khỏi bộ sưu tập.

db.Employee.remove({Employeeid:22})

Code Giải thích:

  • Đoạn mã trên sử dụng chức năng xóa và chỉ định tiêu chí trong trường hợp này là xóa các tài liệu có id Nhân viên là 22.

Nếu lệnh được thực hiện thành công, Đầu ra sau sẽ được hiển thị

Đầu ra:

Ví dụ về MongoDB Hàm Remove()

Kết quả sẽ hiển thị rằng 1 tài liệu đã bị xóa.

Xóa tất cả tài liệu so với chỉ một tài liệu

Phương thức `remove()` có thể xóa tất cả các tài liệu phù hợp hoặc chỉ một tài liệu duy nhất, tùy thuộc vào các đối số bạn truyền vào. Hiểu rõ sự khác biệt này sẽ giúp tránh mất dữ liệu ngoài ý muốn.

Để xóa tất cả tài liệu trong một bộ sưu tập, hãy truyền vào điều kiện rỗng:

db.Employee.remove({})

Thao tác này xóa tất cả tài liệu nhưng vẫn giữ nguyên bộ sưu tập. Để chỉ xóa các tài liệu khớp với điều kiện, hãy truyền vào một đối tượng truy vấn, như đã trình bày trước đó với {Employeeid:22}. Nếu có nhiều tài liệu khớp và bạn chỉ muốn xóa tài liệu đầu tiên, hãy thêm tùy chọn justOne:

db.Employee.remove({EmployeeName:"Smith"}, {justOne:true})

Sự khác biệt chính là:

  • remove({}) xóa tất cả tài liệu trong bộ sưu tập.
  • remove({condition}) xóa mọi tài liệu khớp với điều kiện.
  • remove({condition}, {justOne:true}) chỉ xóa tài liệu khớp đầu tiên.

Luôn kiểm tra kỹ điều kiện trước khi chạy lệnh xóa, vì bộ lọc trống hoặc sai có thể xóa toàn bộ bộ sưu tập. Trong các hệ thống hiện đại MongoDBCác phương thức deleteOne() và deleteMany() thay thế các mẫu này và làm cho ý định trở nên rõ ràng hơn.

Các phương pháp thay thế hiện đại cho count() và remove()

Cả count() và remove() đều là các phương thức cũ. Các phương thức mới hơn... MongoDB Các trình điều khiển đánh dấu chúng là lỗi thời và cung cấp các phương pháp thay thế rõ ràng hơn. Bảng dưới đây đối chiếu từng phương pháp cũ với phương pháp hiện đại tương đương:

Phương pháp kế thừa Thay thế hiện đại Mục đích
đếm() đếm tài liệu() Trả về số lượng chính xác các tài liệu phù hợp.
đếm() estimatedDocumentCount() Trả về số lượng ước tính nhanh chóng của tất cả các tài liệu.
tẩy() xóaOne() Xóa tài liệu đầu tiên khớp với bộ lọc.
tẩy() xóaMany() Xóa tất cả các tài liệu khớp với bộ lọc.

Đối với các ứng dụng mới, nên ưu tiên các phương pháp hiện đại này. Chúng tách biệt việc đếm khỏi việc ước tính và việc xóa một tài liệu khỏi việc xóa nhiều tài liệu, giúp các truy vấn an toàn hơn và dễ đọc hơn. Các hàm count() và remove() cũ vẫn hoạt động với các hướng dẫn và tập lệnh cũ hơn.

Câu Hỏi Thường Gặp

Phương thức `remove()` xóa các tài liệu nhưng vẫn giữ lại tập hợp và các chỉ mục của nó. Phương thức `drop()` xóa toàn bộ tập hợp, bao gồm mọi tài liệu và chỉ mục. Sử dụng `remove` để xóa dữ liệu và `drop` để loại bỏ hoàn toàn tập hợp.

Không. Phương thức remove() chỉ xóa các tài liệu bên trong bộ sưu tập. Bộ sưu tập, chỉ mục và cấu hình của nó vẫn được giữ nguyên, vì vậy bạn có thể chèn các tài liệu mới vào cùng bộ sưu tập đó sau này mà không cần tạo lại.

Phương thức count() cũ có thể trả về giá trị gần đúng trên các cụm phân mảnh sau khi các thao tác thất bại. Để có tổng số chính xác, hãy sử dụng countDocuments(), phương thức này thực hiện phép tổng hợp; hãy sử dụng estimatedDocumentCount() khi tốc độ quan trọng hơn độ chính xác.

Trí tuệ nhân tạo (AI) có thể dịch một yêu cầu đơn giản thành truy vấn đếm hoặc xóa chính xác với bộ lọc phù hợp, và cảnh báo bạn khi lệnh xóa sẽ ảnh hưởng đến mọi tài liệu. Luôn luôn xem xét lại trước khi chạy.

Đúng vậy. AI có thể xem xét lệnh xóa hoặc xóa nhiều, đánh dấu bộ lọc bị thiếu dẫn đến việc xóa toàn bộ bộ sưu tập và đề xuất thêm điều kiện hoặc sao lưu trước khi thực thi.

Tóm tắt bài viết này với: