Node.js: Xóa dữ liệu trong bộ sưu tập (DeleteOne và DeleteMany)
Xóa dữ liệu trong Collection
Để xóa một bản ghi hoặc tài liệu trong MongoDB, chúng ta sử dụng phương thức deleteOne().
Tham số đầu tiên của phương thức deleteOne() là một đối tượng truy vấn xác định tài liệu nào cần xóa.
Lưu ý: Nếu truy vấn tìm thấy nhiều tài liệu, chỉ dữ liệu xuất hiện đầu tiên sẽ bị xóa.
Ở ví dụ này chúng ta sẽ xóa các dữ liệu có chứa địa chỉ là Mountain 21
var { MongoClient } = require('mongodb-legacy');
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, client) {
if (err) throw err;
var dbo = client.db("mydb");
var myquery = { address: 'Mountain 21' };
dbo.collection("customers").deleteOne(myquery, function(err, res) {
if (err) throw err;
console.log("1 document deleted");
client.close();
});
});
Với mongoose
const mongoose = require("mongoose")
const url = "mongodb://localhost:27017/mydb"
const { Schema } = mongoose
const schema = new Schema({name: "string", address: "string"})
const userinfo = mongoose.model("userinfo", schema, "customers")
mongoose.connect(url, function(err) {
if(err) throw err;
var myquery = { address: 'Mountain 21' };
userinfo.deleteOne(myquery, function(err, res){
if (err) throw err;
console.log("1 document deleted");
mongoose.connection.close();
});
});
Kết quả
1 document deleted
Xóa nhiều dữ liệu cùng lúc
Phương thức deleteMany() được sử dụng để xóa nhiều tài liệu cùng lúc.
Tham số đầu tiên của phương thức deleteMany() là một đối tượng truy vấn xác định tài liệu nào cần xóa.
Ở ví dụ này chúng ta sẽ xóa các dữ liệu có địa chỉ bắt đầu bằng chữ L
var { MongoClient } = require('mongodb-legacy');
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, client) {
if (err) throw err;
var dbo = client.db("mydb");
var myquery = { address: /^L/ };
dbo.collection("customers").deleteMany(myquery, function(err, res) {
if (err) throw err;
console.log(res.deletedCount + " document(s) deleted");
client.close();
});
});
Với mongoose
const mongoose = require("mongoose")
const url = "mongodb://localhost:27017/mydb"
const { Schema } = mongoose
const schema = new Schema({name: "string", address: "string"})
const userinfo = mongoose.model("userinfo", schema, "customers")
mongoose.connect(url, function(err) {
if(err) throw err;
var myquery = { address: /^L/ };
userinfo.deleteMany(myquery, function(err, res){
if (err) throw err;
console.log(res.deletedCount + " document(s) deleted");
mongoose.connection.close();
});
});
Kết quả
1 document(s) deleted
Đối tượng kết quả được trả về
Phương thức deleteOne() và deleteMany() trả về một đối tượng chứa thông tin về cách thực thi ảnh hưởng đến cơ sở dữ liệu.
{ acknowledged: true, deletedCount: 0 }
Trong đó:
- acknowledged: True nếu hoạt động được sử dụng với write concern và ngược lại
- deletedCount: Số lượng bản ghi hoặc tài liệu đã xóa