Xóa tài liệu MongoDB

Trong MongoDB, db. sự sắp xếp. Phương thức remove() được sử dụng để xóa tài liệu khỏi bộ sưu tập. Phương thức remove() hoạt động trên hai tham số

1. tiêu chí xóa. Với việc sử dụng cú pháp của nó, bạn có thể xóa các tài liệu khỏi bộ sưu tập

2. Chỉ một. Nó chỉ xóa một tài liệu khi được đặt thành đúng hoặc 1

cú pháp

Xóa tất cả tài liệu

Nếu bạn muốn xóa tất cả tài liệu khỏi bộ sưu tập, hãy chuyển một tài liệu truy vấn trống {} cho phương thức remove(). Phương thức remove() không xóa các chỉ mục

Hãy lấy một ví dụ để minh họa phương thức remove(). Trong ví dụ này, chúng tôi xóa tất cả tài liệu khỏi bộ sưu tập "javatpoint"

Xóa tất cả các tài liệu phù hợp với một điều kiện

Nếu bạn muốn xóa một tài liệu phù hợp với một điều kiện cụ thể, hãy gọi phương thức remove() với tham số

Ví dụ sau sẽ xóa một tài liệu khỏi bộ sưu tập javatpoint trong đó trường loại bằng ngôn ngữ lập trình


Để xóa một tài liệu, chúng ta sử dụng phương thức delete_one()

Tham số đầu tiên của phương thức delete_one() là đối tượng truy vấn xác định tài liệu nào cần xóa

Ghi chú. Nếu truy vấn tìm thấy nhiều tài liệu, thì chỉ lần xuất hiện đầu tiên bị xóa

Thí dụ

Xóa tài liệu có địa chỉ "Núi 21"

pymongo nhập khẩu

myclient = pymongo. MongoClient("mongodb. //máy chủ cục bộ. 27017/")
mydb = myclient["cơ sở dữ liệu của tôi"]
mycol = mydb["khách hàng"]

myquery = { "địa chỉ". "Núi 21" }

nấm mốc. xóa_one (truy vấn của tôi)

Chạy ví dụ »


Xóa nhiều tài liệu

Để xóa nhiều hơn một tài liệu, hãy sử dụng phương thức delete_many()

Tham số đầu tiên của phương thức delete_many() là đối tượng truy vấn xác định tài liệu nào cần xóa

Thí dụ

Xóa tất cả các tài liệu có địa chỉ bắt đầu bằng chữ S

pymongo nhập khẩu

myclient = pymongo. MongoClient("mongodb. //máy chủ cục bộ. 27017/")
mydb = myclient["cơ sở dữ liệu của tôi"]
mycol = mydb["khách hàng"]

myquery = { "địa chỉ". {"$regex". "^S"} }

x = mycol. xóa_many(myquery)

in(x. đã xóa_count," tài liệu đã bị xóa. ")

Chạy ví dụ »


Xóa tất cả tài liệu trong một bộ sưu tập

Để xóa tất cả các tài liệu trong một bộ sưu tập, hãy chuyển một đối tượng truy vấn trống cho phương thức delete_many()

Thí dụ

Xóa tất cả các tài liệu trong bộ sưu tập "khách hàng"

pymongo nhập khẩu

myclient = pymongo. MongoClient("mongodb. //máy chủ cục bộ. 27017/")
mydb = myclient["cơ sở dữ liệu của tôi"]
mycol = mydb["khách hàng"]

x = mycol. xóa_nhiều({})

in(x. đã xóa_count," tài liệu đã bị xóa. ")

Chạy ví dụ »



Sau khi tạo bản cập nhật tài liệu, có thể xảy ra trường hợp muốn xóa một tài liệu hoặc một bộ tài liệu. MongoDB cũng cho phép bạn xóa bất kỳ tài liệu cụ thể nào hoặc nhiều bộ sưu tập tài liệu. Trong chương này, bạn sẽ tìm hiểu về cách xóa tài liệu khỏi cơ sở dữ liệu MongoDB

Xóa tài liệu trong MongoDB

MongoDB cho phép bạn xóa một tài liệu hoặc nhiều tài liệu bằng cách sử dụng một trong ba phương pháp của nó. Ba phương thức do MongoDB cung cấp để xóa tài liệu là

  1. db. thu thập. xóaOne()
  2. db. thu thập. gỡ bỏ()
  3. db. thu thập. xóaMany()

db. thu thập. phương thức xóaOne()

Phương pháp này được sử dụng để xóa chỉ một tài liệu, ngay cả khi có nhiều tài liệu phù hợp với tiêu chí. Đây là một ví dụ về việc sử dụng db này. thu thập. phương thức deleteOne() để xóa một tài liệu. Để thực hiện quy trình này tại đây, chúng tôi đã tạo cơ sở dữ liệu và lưu tất cả dữ liệu riêng biệt

Thí dụ

db.programmers.insert(
[
  { name: "James Gosling" },
  { name: "Dennis Ritchie" },
  { name: "Bjarne Stroustrup" }
]
)

Khi quá trình chèn hoàn tất, bạn có thể chạy truy vấn (được đề cập bên dưới) để trả về nhiều kết quả

MongoDB là cơ sở dữ liệu NoSQL phổ biến nhất, lưu trữ dữ liệu dưới dạng tài liệu. Các tài liệu về cơ bản là các đối tượng JSON và có nhiều cách để xóa chúng. Chúng tôi cũng có thể xóa các tài liệu này thông qua GUI của MongoDB Compass hoặc MongoDB Atlas. Nhưng trong bài viết này, chúng ta sẽ học cách xóa nó thông qua công cụ dòng lệnh của Mongo shell.    

điều kiện tiên quyết

Chúng tôi đã sử dụng Windows 10 trong hướng dẫn này. Vui lòng đảm bảo rằng bạn đã tải xuống Máy chủ cộng đồng MongoDB và cài đặt nó. Thật dễ dàng để thiết lập và bạn cần đảm bảo rằng bạn đã thêm nó vào biến Môi trường trong PC của mình

bốn cách

Tiếp theo chúng ta sẽ tìm hiểu về bốn cách để xóa một tài liệu MongoDB thông qua Mongo shell. Bốn cách là -

  • Phương thức db. thu thập. gỡ bỏ()
  • Lệnh xóa
  • Phương thức db. thu thập. xóaOne()
  • Phương thức db. thu thập. xóaMany()

Khi chúng tôi đã cài đặt mongo shell trên hệ thống của mình, chúng tôi có thể đi tới thiết bị đầu cuối và nhập mongo. Nếu mọi thứ đều ổn, chúng ta sẽ đăng nhập vào shell. Ngoài ra, hãy đảm bảo rằng bạn có MongoDB được cài đặt cục bộ chạy qua lệnh Compass hoặc mongod.  

Bên trong Mongo shell, chúng ta có thể thấy tất cả các cơ sở dữ liệu bằng cách sử dụng show databases và sau đó chuyển sang cơ sở dữ liệu mà chúng ta sẽ làm việc, sử dụng lệnh use

db. thu thập. loại bỏ() phương pháp

Với phương pháp này, chúng tôi có thể xóa tất cả tài liệu, một số tài liệu hoặc một tài liệu. Chúng tôi chỉ định một tham số trong đó và tùy thuộc vào nó, số lượng tài liệu sẽ bị xóa.  

Trong cơ sở dữ liệu employeeDB của chúng tôi, chúng tôi có một bộ sưu tập có tên là nhân viên. Chúng tôi có 3 hồ sơ trong bộ sưu tập nhân viên của mình

Chúng tôi sẽ xóa tất cả nhân viên ở độ tuổi 39 bằng lệnh db. người lao động. xóa ({ “tuổi”. 39 }). Ở đây, nó chỉ xóa một bản ghi vì chỉ có một nhân viên phù hợp với tiêu chí.   

Chúng tôi cũng có thể giới hạn xóa, chỉ một bản ghi bằng cách đặt tham số justOne thành true. Trong phương thức này, chúng tôi đang chuyển một đối tượng trống và xóa bản ghi đầu tiên

Chúng tôi đã thêm lại hai tài liệu đã xóa. Bây giờ, chúng ta có thể xóa tất cả tài liệu bằng lệnh db. người lao động. gỡ bỏ({}).   

Lệnh. xóa bỏ

Lệnh xóa cũng có thể được sử dụng để xóa tài liệu khỏi bộ sưu tập Mongo dB. Bên trong phương thức xóa cũng sử dụng lệnh xóa. Bây giờ, lệnh xóa cần được chạy với db. runCommand() và chúng ta cần truyền một đối tượng cho nó. Tại đây, phím xóa sẽ chứa tên bộ sưu tập. Và phím xóa sẽ chứa một mảng sẽ có một truy vấn và cũng có thể đặt biến giới hạn.  

Với lệnh dưới đây, chúng tôi đang xóa một nhân viên có tuổi 38, bằng cách giới hạn số lượng là một.  

db.runCommand( 
   { 
      delete: "employees", 
      deletes:  [ { q: { age: 38 }, limit: 1 } ] 
   } 
) 

Vì vậy, khi chúng tôi đưa ra lệnh này, chỉ một bản ghi sẽ bị xóa.  

db. thu thập. phương thức xóaOne()

db. thu thập. phương thức deleteOne() tương tự như phương thức db. thu thập. remove(), nhưng với một điều khoản đặc biệt là chỉ xóa một tài liệu. Chúng ta đã thấy ví dụ về db. thu thập. remove() sớm hơn, nhưng nó cũng có thể được sử dụng trong các cấu hình khác

Nhưng db. thu thập. phương thức deleteOne() chỉ có thể được sử dụng để xóa một tài liệu. Chúng tôi đã thêm một số tài liệu vào bộ sưu tập nhân viên của mình.   

Bây giờ, trong trình bao mongo, hãy chạy lệnh db. người lao động. xóaOne({ "tuổi". 39 }) và nó sẽ xóa nhân viên đầu tiên i. e. Đoạn văn.   

Bây giờ, Parag nhân viên đã bị xóa khỏi bộ sưu tập nhân viên của chúng tôi.   

Chúng tôi cũng có thể xóa tài liệu đầu tiên của bộ sưu tập, bằng cách không chuyển bất kỳ đối số nào. Lệnh này là db. người lao động. deleteOne({}), trong trường hợp của chúng ta. Nó sẽ chỉ xóa tài liệu, tài liệu đầu tiên trong bộ sưu tập.   

Giờ đây, nhân viên Amit đã bị xóa khỏi bộ sưu tập nhân viên vì nó nằm ở đầu bộ sưu tập của chúng tôi.   

db. thu thập. phương thức xóaMany()

db. thu thập. phương thức deleteMany() gần như giống với phương thức của db. thu thập. remove(), nhưng với một điều khoản đặc biệt là xóa nhiều tài liệu. Chúng tôi cần chuyển một tham số/bộ lọc cho nó và nó sẽ xóa các tài liệu theo nó. Khi tất cả tài liệu khớp với bộ lọc từ một bộ sưu tập, bộ lọc sẽ xóa tất cả tài liệu. Với db. thu thập. deleteOne() chúng ta chỉ có thể xóa một tài liệu, ngay cả khi tiêu chí phù hợp với nhiều tài liệu.  

Nhưng chúng tôi không có các hạn chế như vậy trong db. thu thập. phương thức xóaMany(). Trên thực tế, chúng tôi cũng có thể xóa tất cả tài liệu trong bộ sưu tập. Chúng ta sẽ xem ví dụ về cả hai tiếp theo.  

Chúng tôi đã thêm lại tài liệu vào bộ sưu tập nhân viên của mình, thông qua MongoDB Compass trong phiên bản MongoDB được cài đặt cục bộ của chúng tôi. Xin lưu ý rằng chúng tôi có ba nhân viên có độ tuổi trên 38.  

Bây giờ, chúng tôi muốn xóa tài liệu của tất cả nhân viên có tuổi trên 38. Để làm được điều đó, chúng tôi sẽ sử dụng lệnh db. người lao động. xóaNhiều({ "tuổi". { $gt. 38 } }) và nó sẽ xóa ba nhân viên khỏi bộ sưu tập của chúng tôi.   

Bây giờ, khi chúng tôi kiểm tra bộ sưu tập nhân viên trong MongoDB compass, chúng tôi có thể thấy ba nhân viên có độ tuổi 39 đã bị xóa khỏi bộ sưu tập.  

Bây giờ, để xóa tất cả tài liệu khỏi bộ sưu tập, chúng tôi sử dụng lệnh db. người lao động. deleteMany({}) và thao tác này sẽ xóa hai nhân viên đang nhắc lại khỏi bộ sưu tập nhân viên của chúng tôi

Bây giờ, bộ sưu tập nhân viên của chúng tôi không có tài liệu.   

Xóa thông qua MongoDB Compass

Chúng tôi cũng có thể xóa tài liệu, sử dụng công cụ miễn phí tuyệt vời của MongoDB Compass. Để cài đặt la bàn MongoDB, chỉ cần truy cập https. //www. mongodb. com/ rồi di chuột qua Sản phẩm rồi trong Công cụ, nhấp vào La bàn.  

Trong trang tiếp theo, chỉ cần nhấp vào nút Tải xuống ngay và nó sẽ đưa chúng ta đến trang tiếp theo.   

Tại đây, chúng ta phải nhấp lại vào la bàn MongoDB và tải xuống tệp zip. Chúng ta chỉ cần cài đặt nó sau khi giải nén tệp zip.  

Khi la bàn được cài đặt, chỉ cần mở nó và nhấp vào nút Kết nối và nó sẽ kết nối chúng ta với phiên bản MongoDB được cài đặt cục bộ. Lưu ý rằng chúng tôi cũng có thể cung cấp chuỗi kết nối từ cơ sở dữ liệu MongoDB dựa trên đám mây, như MongoDB Atlas trong đó

Chúng tôi đã tạo một số cơ sở dữ liệu. Nhưng khi bạn bắt đầu MongoDB lần đầu tiên, bạn sẽ chỉ thấy cơ sở dữ liệu quản trị. Chúng ta sẽ vào bên trong cơ sở dữ liệu có tên employeeDB, bằng cách nhấp vào cơ sở dữ liệu đó.   

Ở đây, chúng tôi có một bộ sưu tập nhân viên và trong đó chúng tôi có bốn tài liệu. Chỉ cần nhấp vào bộ sưu tập.   

Nó sẽ cho chúng ta thấy bốn tài liệu. Bây giờ hãy di chuột qua tài liệu bạn muốn xóa và bốn nút nhỏ sẽ xuất hiện. Bây giờ, hãy nhấp vào biểu tượng xóa.   

Nó sẽ yêu cầu chúng tôi phê duyệt để xóa tài liệu. Chỉ cần nhấp vào nút Xóa.   

Và tài liệu của nhân viên có tên là Parag sẽ bị xóa.   

Mối quan tâm về nguyên tử

Tính nguyên tử là một phần của thuộc tính ACID trong cơ sở dữ liệu. Giờ đây, ACID có nghĩa là Tính nguyên tử, Tính nhất quán, Tính cách ly và Độ bền. Tất cả các cơ sở dữ liệu Quan hệ truyền thống như Oracle, MySQL về bản chất đều là ACID. Tính nguyên tử là thuộc tính quan trọng nhất trong ACID và điều đó có nghĩa là nếu có một loạt thao tác cơ sở dữ liệu thì hoặc mọi thứ xảy ra hoặc không có gì xảy ra

MongoDB và các cơ sở dữ liệu NoSQL khác không bao giờ được thiết kế cho các thuộc tính ACID. MongoDB được tạo đặc biệt với khả năng mở rộng. Vì vậy, nếu chúng ta có câu lệnh bỏ, câu lệnh cập nhật hoặc câu lệnh xóa trong MongoDB thì chúng được đảm bảo chỉ nguyên tử ở cấp độ Tài liệu đơn. Các thao tác này còn được gọi là thao tác ghi và chúng chỉ là nguyên tử ở một cấp độ tài liệu duy nhất.  

Bây giờ, nếu một tài liệu duy nhất của chúng tôi chứa nhiều tài liệu phụ, nó vẫn được đảm bảo là nguyên tử và nếu không thành công, quá trình khôi phục tự động sẽ xảy ra, giống như trong cơ sở dữ liệu quan hệ. Tuy nhiên, nếu thao tác ghi liên quan đến nhiều tài liệu, nó không được đảm bảo trong MongoDB

Bây giờ, chúng ta đã thấy db. thu thập. deleteMany() trước đó với tham số bộ lọc. Nhưng nó cũng có thể có hai tham số khác. Cú pháp hoàn chỉnh của db. thu thập. phương thức deleteMany() như bên dưới.  

db.collection.deleteMany( 
   , 
   { 
      writeConcern: , 
      collation:  
   } 
) 

Tại đây, chúng tôi có thể cung cấp writeConcern và cả đối chiếu. Chúng tôi lo lắng về writeConcern vì nó liên quan đến thao tác ghi và tính nguyên tử.   

writeConcern là một tham số tùy chọn, ở dạng tài liệu thể hiện mối quan tâm ghi để sử dụng nếu lớn hơn thì đa số. Viết mối quan tâm có thể bao gồm các trường sau.  

{w. , j. , hết thời gian chờ. }

  • tùy chọn w là yêu cầu xác nhận, rằng thao tác ghi đã được chuyển đến một số phiên bản mongod cụ thể.  
  • tùy chọn j là yêu cầu xác nhận rằng thao tác ghi đã được ghi vào nhật ký đĩa
  • tùy chọn wtimeout là chỉ định giới hạn thời gian, để ngăn các thao tác ghi bị chặn vô thời hạn.  

Sử dụng tùy chọn w, có sẵn các tùy chọn sau.  

  • w. 1 – Yêu cầu xác nhận rằng mối quan tâm ghi đã được chuyển đến một cá thể mongod duy nhất. Nó cũng là tùy chọn mặc định.  
  • w. 0 – Không yêu cầu xác nhận thao tác ghi.  
  • w. “đa số” – Nó yêu cầu xác nhận rằng thao tác ghi đã được chuyển đến phần lớn máy chủ chính và phụ.  

Bây giờ, chúng ta sẽ xem xét các giá trị tùy chọn j.  

  • j. true – Nó yêu cầu xác nhận rằng các phiên bản mongod khác nhau, được đề cập trong w. , đã ghi vào tạp chí trên đĩa.  

Tùy chọn wtimeout chỉ định giới hạn thời gian tính bằng mili giây cho mối quan tâm ghi. Nó khiến các thao tác ghi trả về có lỗi sau giới hạn đã chỉ định.  

Quản lý cơ sở dữ liệu với Delete

Để giữ cho cơ sở dữ liệu sạch sẽ và dễ quản lý, việc xóa và xóa tệp là một nhiệm vụ cần thiết. Trong bài đăng này, chúng tôi đã khám phá các cách khác nhau để xóa tài liệu trong cơ sở dữ liệu MongoDB. Tất cả các phương pháp này hoạt động cho các mục đích khác nhau và trong các tình huống khác nhau. Đầu tiên, chúng ta đã tìm hiểu về bốn cách khác nhau để xóa tài liệu khỏi bộ sưu tập MongoDB thông qua giao diện dòng lệnh của Mongo shell. Sau đó, chúng tôi đã biết cách xóa tài liệu thông qua giao diện người dùng đồ họa miễn phí tuyệt vời của MongoDB Compass.  

Cuối cùng, chúng tôi đã tìm hiểu về những lo ngại về tính nguyên tử trong khi xóa tài liệu và đặc biệt là nhiều tài liệu. Chúng tôi cũng đã tìm hiểu về tùy chọn writeConcern trong db. thu thập. phương thức xóaMany().  

Làm cách nào để xóa tất cả tài liệu trong MongoDB?

Để xóa tất cả tài liệu khỏi bộ sưu tập, chuyển tài liệu bộ lọc trống {} vào db. bộ sưu tập. phương thức xóaMany() . Phương thức trả về một tài liệu với trạng thái hoạt động.

Sự khác biệt giữa xóa và xóa trong MongoDB là gì?

xóaNhiều. lệnh trả về giá trị boolean là true nếu hoạt động chạy tốt với mối quan tâm ghi và trả về false nếu chúng ta vô hiệu hóa mối quan tâm ghi. Ngoài ra, nó trả về số đã xóa chứa số của tài liệu đã xóa. Di dời. lệnh trả về WriteResult

Loại bỏ trong MongoDB là gì?

Phương thức remove() của MongoDB được dùng để xóa tài liệu khỏi bộ sưu tập . phương thức remove() chấp nhận hai tham số. Một là tiêu chí xóa và thứ hai là cờ justOne. tiêu chí xóa − (Tùy chọn) tiêu chí xóa theo tài liệu sẽ bị xóa.

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

deleteone() Phương thức deleteOne() xóa tài liệu đầu tiên khỏi bộ sưu tập phù hợp với tiêu chí lựa chọn đã cho . Nó sẽ xóa/xóa một tài liệu khỏi bộ sưu tập. Nó có bốn tham số, tham số đầu tiên là tiêu chí lựa chọn và các tham số khác là tùy chọn.