Removendo Documentos no MongoDB com Node.js
Há várias maneiras de remover documentos no MongoDB. Os métodos principais das coleções para realizar essa tarefa são:
deleteOne()
: Remove um único documento que corresponde a um critério específico.deleteMany()
: Remove todos os documentos que correspondem a um critério específico.findOneAndDelete()
: Obtém e remove um único documento que corresponde a um critério específico.drop()
: Remove toda a coleção.
Removendo um Documento com deleteOne
O método deleteOne()
remove apenas um documento:
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("usersdb");
const collection = db.collection("users");
const result = await collection.deleteOne({ name: "Bob" });
console.log(result);
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
}
}
run().catch(console.error);
O método deleteOne()
aceita um filtro como parâmetro para especificar os documentos a serem removidos. O resultado da operação de exclusão é um objeto que, por meio da propriedade deletedCount
, mostra o número de documentos removidos. A propriedade acknowledged: true
significa que o servidor recebeu e processou a operação de exclusão:
c:\node\mongoapp>node app { acknowledged: true, deletedCount: 1 }
Removendo Múltiplos Documentos com deleteMany
O método deleteMany()
remove todos os documentos que correspondem a um critério específico:
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("usersdb");
const collection = db.collection("users");
const result = await collection.deleteMany({ name: "Tom" });
console.log(result);
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
}
}
run().catch(console.error);
O método deleteMany
retorna um objeto descrevendo o resultado da exclusão. A propriedade deletedCount
mostra o número de documentos removidos:
c:\node\mongoapp>node app { acknowledged: true, deletedCount: 2 }
Removendo e Obtendo um Documento com findOneAndDelete
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("usersdb");
const collection = db.collection("users");
const result = await collection.findOneAndDelete({ age: 21 });
console.log(result);
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
}
}
run().catch(console.error);
Saída no console:
c:\node\mongoapp>node app { _id: new ObjectId("6112ad050d15a6dfd6330280"), name: "Alice", age: 21 }
O console mostra qual documento foi removido.
Removendo uma Coleção com drop
O método drop()
remove toda a coleção:
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("usersdb");
const collection = db.collection("users");
const result = await collection.drop();
console.log(result); // true|false
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
}
}
run().catch(console.error);
O resultado do método drop
é um valor booleano.
É importante notar que, se a coleção removida for a única no banco de dados, todo o banco de dados será excluído também.