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

4 cách xóa tài liệu trong MongoDB

Trong MongoDB, nếu bạn cần xóa tài liệu trong mongo shell, bạn có thể sử dụng:

  • db.collection.remove() phương pháp
  • delete lệnh
  • db.collection.deleteOne() phương pháp
  • db.collection.deleteMany() phương pháp

Bài viết này cung cấp các ví dụ về từng loại.

db.collection.remove() Phương pháp

db.collection.remove() phương thức xóa (tức là xóa) tài liệu khỏi bộ sưu tập. Bạn 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 duy nhất theo yêu cầu.

Dưới đây là một ví dụ về việc xóa một tài liệu cụ thể.

db.employees.remove({ "_id": 3 })

Kết quả:

WriteResult({ "nRemoved" : 1 })

Thao tác đó sẽ xóa tài liệu có _id giá trị của 3 từ employees bộ sưu tập.

Tuy nhiên, nó không nhất thiết phải khớp với một tài liệu. Tiêu chí bộ lọc có thể khớp với nhiều tài liệu và bạn thậm chí có thể để trống tiêu chí bộ lọc để khớp với tất cả các tài liệu (tức là xóa tất cả tài liệu).

Dưới đây là một ví dụ về việc xóa tất cả các tài liệu:

db.employees.remove({})

Kết quả:

WriteResult({ "nRemoved" : 5 })

Kết quả cho chúng tôi thấy rằng năm tài liệu đã bị xóa (vì vậy bộ sưu tập rõ ràng chứa năm tài liệu trước khi chúng tôi xóa tất cả).

remove() phương thức cũng chấp nhận một justOne để giới hạn việc loại bỏ chỉ một tài liệu. Thao tác này sẽ xóa tài liệu đầu tiên phù hợp với tiêu chí xóa.

Ví dụ:

db.employees.remove({}, "justOne: true")

Kết quả:

WriteResult({ "nRemoved" : 1 })

Trong trường hợp này, tiêu chí bộ lọc của chúng tôi là một tài liệu trống và vì vậy nó khớp với tất cả các tài liệu trong bộ sưu tập. Tuy nhiên, chỉ một tài liệu bị xóa vì chúng tôi sử dụng justOne: true .

delete Lệnh

delete lệnh thực hiện giống hệt như lệnh remove() phương pháp. Trên thực tế, remove() phương thức sử dụng lệnh xóa.

Dưới đây là một ví dụ về việc xóa một tài liệu cụ thể bằng delete lệnh.

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

Kết quả:

{ "n" : 1, "ok" : 1 }

db.collection.deleteOne() Phương pháp

db.collection.deleteOne() phương thức tương tự với db.collection.remove() , ngoại trừ việc nó chỉ xóa một tài liệu khỏi bộ sưu tập được chỉ định.

Nó chấp nhận một điều kiện lọc, giống như db.collection.remove() .

Ví dụ:

db.employees.deleteOne({ "_id": 4 })

Kết quả:

{ "acknowledged" : true, "deletedCount" : 1 }

Số nhân viên bị xóa này là 4.

Nếu bạn cung cấp một bộ lọc rộng hơn trả về nhiều tài liệu, nó chỉ xóa tài liệu đầu tiên.

Ví dụ:thao tác sau sẽ xóa tài liệu đầu tiên trong bộ sưu tập, bất kể có bao nhiêu tài liệu trong bộ sưu tập:

db.employees.deleteOne({})

db.collection.deleteOne() phương pháp này có thể là một phương pháp hữu ích để sử dụng nếu bạn lo lắng về việc vô tình xóa nhiều tài liệu. Hầu hết các tài liệu mà nó sẽ xóa là một tài liệu, vì vậy nếu bạn mắc lỗi "sai lầm", bạn sẽ không vô tình xóa tất cả tài liệu khỏi bộ sưu tập (tất nhiên trừ khi chỉ có một tài liệu trong bộ sưu tập).

db.collection.deleteMany() Phương pháp

db.collection.deleteMany() phương thức tương tự như db.collection.deleteOne() ngoại trừ việc nó có thể xóa nhiều tài liệu.

Trên thực tế, nó có thể giống với remove() , bởi vì nó có thể xóa nhiều tài liệu và một tài liệu (mặc dù nó không có justOne tham số như remove() hiện).

Phương pháp này có thể hữu ích nếu bạn muốn xóa tất cả các tài liệu phù hợp với một tiêu chí nhất định.

Ví dụ:

db.employees.deleteMany({ "salary": { $gt: 80000 } })

Kết quả:

{ "acknowledged" : true, "deletedCount" : 2 }

Điều này đã xóa tất cả các tài liệu có salary trường trên 80000. Trong trường hợp này, chỉ có hai tài liệu khớp nhau, nhưng nó có thể là bất kỳ số nào.

Bạn cũng có thể sử dụng db.collection.deleteMany() để xóa tất cả tài liệu khỏi bộ sưu tập.

Ví dụ:

db.employees.deleteMany({})

Kết quả:

{ "acknowledged" : true, "deletedCount" : 5 }

Trong trường hợp này, có năm tài liệu trong bộ sưu tập và cả năm tài liệu đã bị xóa.

Thông tin thêm

Các phương thức trên cũng chấp nhận một số đối số tùy chọn, chẳng hạn như writeConcerncollation .

deleteOne()deleteMany() cũng chấp nhận hint đối số.

Dưới đây là các liên kết đến tài liệu MongoDB cho từng phương thức / lệnh:

  • db.collection.remove()
  • delete
  • db.collection.deleteOne()
  • db.collection.deleteMany()

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Có cách nào đơn giản để xuất dữ liệu từ ứng dụng đã triển khai sao băng không?

  2. Dữ liệu Spring và mongodb - khôi phục đơn giản với Spring trong @Transactional

  3. Chọn bản ghi phù hợp với giá trị concat của hai trường trong mongodb

  4. Nâng cấp cơ sở dữ liệu mongo cũ hơn sau khi nâng cấp phiên bản mongo không chủ ý

  5. Xóa các bản sao khỏi MongoDB