Trong MongoDB, db.collection.deleteOne()
phương thức xóa một tài liệu khỏi một bộ sưu tập. Nói cách khác, nó sẽ xóa nó.
Bộ sưu tập collection
một phần là tên của bộ sưu tập để xóa tài liệu khỏi đó.
Ví dụ
Hãy điền vào một bộ sưu tập có tên là employees
với năm tài liệu:
db.employees.insertMany([
{ _id: 1, name: "Sandy", salary: 55000 },
{ _id: 2, name: "Sarah", salary: 128000 },
{ _id: 3, name: "Fritz", salary: 25000 },
{ _id: 4, name: "Chris", salary: 45000 },
{ _id: 5, name: "Beck", salary: 82000 }
])
Bây giờ hãy sử dụng db.collection.deleteOne()
để xóa một trong những tài liệu đó.
db.employees.deleteOne({ "_id": 4 })
Kết quả:
{ "acknowledged" : true, "deletedCount" : 1 }
Số nhân viên bị xóa này là 4.
Hãy xem bộ sưu tập để xác minh.
db.employees.find()
Kết quả:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Chúng tôi có thể thấy rằng nhân viên số 4 không còn tồn tại trong bộ sưu tập.
Sử dụng Điều kiện Rộng hơn
Trong ví dụ trước, chúng tôi đã sử dụng _id
của nhân viên mà chúng tôi muốn xóa. Vì _id
trường là số nhận dạng duy nhất cho mỗi tài liệu, điều này cho phép chúng tôi xóa tài liệu chính xác mà chúng tôi muốn xóa.
Cũng có thể xóa một tài liệu mà không cần biết chính xác tài liệu nào sẽ bị xóa. Ví dụ:bạn có thể sử dụng bộ lọc rộng trả về nhiều tài liệu, nhưng chỉ xóa tài liệu đầu tiên khỏi các kết quả đó.
Ví dụ:chúng tôi có thể lọc theo nhân viên kiếm được hơn 80.000 mỗi năm, sau đó xóa tài liệu đầu tiên trong nhóm đó.
db.employees.deleteOne({ "salary": { $gt: 80000 } })
Kết quả:
{ "acknowledged" : true, "deletedCount" : 1 }
Trong ví dụ này, chỉ một tài liệu bị xóa, mặc dù có hai tài liệu phù hợp với tiêu chí.
Chúng ta có thể xem qua bộ sưu tập để biết bộ sưu tập nào đã bị xóa.
db.employees.find()
Kết quả:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Chúng tôi thậm chí có thể tiến thêm một bước nữa và xóa tất cả các bộ lọc, có nghĩa là bộ lọc sẽ chọn từ tất cả các tài liệu trong bộ sưu tập.
db.employees.deleteOne({})
Kết quả:
{ "acknowledged" : true, "deletedCount" : 1 }
Một lần nữa, chúng tôi có thể kiểm tra bộ sưu tập để xem bộ sưu tập nào đã bị xóa.
db.employees.find()
Kết quả:
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Như mong đợi, tài liệu đầu tiên đã bị xóa.
Thông tin thêm
db.collection.deleteOne()
phương thức cũng chấp nhận các tham số tùy chọn như collation
, hint
và writeConcern
.
Xem tài liệu MongoDB để biết thêm thông tin.