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.