Excluir Dados do MongoDB

MongoDBBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como excluir dados de forma eficaz em um banco de dados MongoDB. Você começará excluindo um único documento, depois explorará técnicas para realizar exclusões em massa e remover dados com base em condições específicas. Finalmente, você aprenderá como limpar uma coleção inteira e verificar os resultados da exclusão. Essas habilidades são essenciais para gerenciar seu banco de dados MongoDB e manter a integridade dos dados.

O laboratório abrange os seguintes tópicos: exclusão de um único documento com deleteOne(), remoção de vários documentos com deleteMany(), uso de operadores de consulta para exclusão condicional e limpeza de uma coleção com deleteMany({}) ou drop(). Ao final deste laboratório, você terá uma compreensão sólida de como excluir dados no MongoDB usando vários métodos.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 97%. Recebeu uma taxa de avaliações positivas de 98% dos estudantes.

Excluir um Documento Único

Nesta etapa, você aprenderá como excluir um único documento de uma coleção MongoDB. Primeiro, você precisa se conectar ao shell do MongoDB e preparar alguns dados de exemplo.

Inicie o shell do MongoDB executando o seguinte comando no seu terminal:

mongosh

Uma vez dentro do shell, você criará um novo banco de dados e uma coleção com alguns documentos.

use mylab_database

Crie uma nova coleção com alguns documentos.

db.users.insertMany([
  { name: "John Doe", age: 30, email: "john@example.com" },
  { name: "Jane Smith", age: 25, email: "jane@example.com" },
  { name: "Bob Johnson", age: 35, email: "bob@example.com" }
]);

A saída confirma que três documentos foram inseridos.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("...")
  }
}

Agora, para excluir um único documento, use o método deleteOne(). Este método encontra o primeiro documento que corresponde ao filtro especificado e o remove. Vamos excluir o documento de "Jane Smith".

db.users.deleteOne({ name: "Jane Smith" });

A saída indica que um documento foi excluído com sucesso.

{ "acknowledged": true, "deletedCount": 1 }
  • deleteOne(): Este método remove apenas o primeiro documento que corresponde aos critérios do filtro.
  • { name: "Jane Smith" }: Este é o filtro que especifica qual documento excluir.
  • deletedCount: 1: Isso confirma que um documento foi removido.

Para verificar se o documento foi excluído, você pode listar todos os documentos restantes na coleção users.

db.users.find();

A saída agora mostrará apenas dois documentos, confirmando que "Jane Smith" foi removida.

Excluir Múltiplos Documentos

Na etapa anterior, você excluiu um único documento. Agora, você aprenderá como excluir vários documentos de uma vez usando o método deleteMany(). Isso é útil para operações de remoção em massa, como a limpeza de registros com um status específico.

Primeiro, vamos adicionar alguns novos documentos à nossa coleção users. Esses documentos terão um campo status, que usaremos para nossa operação de exclusão em massa.

db.users.insertMany([
  { name: "Alice Wilson", age: 28, status: "inactive" },
  { name: "Charlie Brown", age: 40, status: "inactive" },
  { name: "David Lee", age: 35, status: "active" },
  { name: "Eve Taylor", age: 45, status: "inactive" }
]);

A saída confirmará a inserção de quatro novos documentos.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("..."),
    "3": ObjectId("...")
  }
}

Agora, use o método deleteMany() para remover todos os usuários cujo status seja "inactive".

db.users.deleteMany({ status: "inactive" });

A saída mostra que três documentos foram excluídos.

{ "acknowledged": true, "deletedCount": 3 }
  • deleteMany(): Este método remove todos os documentos que correspondem aos critérios do filtro.
  • { status: "inactive" }: Este filtro visa todos os documentos onde o campo status é "inactive".

Para confirmar a exclusão em massa, liste todos os documentos restantes na coleção.

db.users.find();

A saída mostrará apenas os documentos que não estavam "inactive", demonstrando que a exclusão em massa foi bem-sucedida.

Excluir Documentos Usando Condições

O MongoDB permite que você use poderosos operadores de consulta para excluir documentos com base em condições mais complexas. Nesta etapa, você aprenderá a usar operadores como $gt (maior que) e $lt (menor que) para realizar exclusões condicionais.

Primeiro, vamos criar uma nova coleção chamada employees com alguns dados de exemplo.

db.employees.insertMany([
  { name: "John Doe", age: 25, department: "Sales", salary: 50000 },
  { name: "Jane Smith", age: 35, department: "Marketing", salary: 60000 },
  { name: "Bob Johnson", age: 45, department: "Sales", salary: 55000 },
  { name: "Alice Brown", age: 30, department: "HR", salary: 52000 }
]);

A saída confirmará a inserção de quatro documentos.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("..."),
    "3": ObjectId("...")
  }
}

Agora, vamos realizar uma exclusão condicional. Removeremos todos os funcionários com mais de 40 anos.

db.employees.deleteMany({ age: { $gt: 40 } });

A saída indica que um documento foi excluído.

{ "acknowledged": true, "deletedCount": 1 }
  • { age: { $gt: 40 } }: Este filtro usa o operador $gt para selecionar documentos onde o campo age é maior que 40.

Em seguida, vamos realizar uma exclusão com base em múltiplas condições. Removeremos funcionários do departamento "Sales" cujo salário seja inferior a 55.000.

db.employees.deleteMany({
  department: "Sales",
  salary: { $lt: 55000 }
});

A saída confirma que outro documento foi excluído.

{ "acknowledged": true, "deletedCount": 1 }
  • Este comando combina duas condições: o department deve ser "Sales" e o salary deve ser menor que 55.000 (usando o operador $lt).

Para verificar os resultados, visualize os documentos restantes na coleção employees.

db.employees.find();

A saída mostrará apenas os dois funcionários que não atenderam aos critérios de exclusão.

Limpar Todos os Dados de uma Coleção

Às vezes, pode ser necessário remover todos os documentos de uma coleção. O MongoDB oferece duas maneiras principais de conseguir isso: usando deleteMany({}) para remover todos os documentos, ou usando drop() para remover a coleção inteira.

Primeiro, vamos criar uma nova coleção products com alguns dados de exemplo.

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
]);

Método 1: Remover Todos os Documentos com deleteMany()

Você pode remover todos os documentos de uma coleção passando um filtro vazio {} para o método deleteMany(). Essa abordagem exclui os dados, mas preserva a própria coleção, incluindo seus índices.

db.products.deleteMany({});

A saída mostra que todos os três documentos foram excluídos.

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

Você pode verificar que a coleção agora está vazia executando uma consulta find().

db.products.find();

Este comando não retornará nenhum documento.

Método 2: Descartar a Coleção Inteira com drop()

O método drop() é mais destrutivo. Ele remove completamente a coleção, incluindo todos os seus documentos, índices e metadados associados.

Primeiro, vamos reinserir os dados de exemplo para termos uma coleção para descartar.

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
]);

Agora, descarte a coleção products inteiramente.

db.products.drop();

A saída true confirma que a coleção foi descartada com sucesso.

true

Se você agora tentar consultar a coleção products, ela não retornará nenhum resultado porque a coleção não existe mais.

db.products.find();

Este comando não produzirá nenhuma saída, pois a coleção foi removida. Para sair do shell mongosh, você pode digitar exit ou pressionar Ctrl+D.

Resumo

Neste laboratório, você aprendeu as técnicas fundamentais para excluir dados no MongoDB. Você começou usando o método deleteOne() para remover um único documento com base em um filtro específico. Em seguida, progrediu para exclusões em massa com deleteMany(), que remove eficientemente vários documentos que correspondem a um critério. Você também explorou como usar operadores de consulta como $gt e $lt para realizar exclusões condicionais mais complexas. Finalmente, você aprendeu dois métodos para limpar uma coleção: usando deleteMany({}) para remover todos os documentos mantendo a estrutura da coleção, e usando drop() para remover permanentemente toda a coleção.

Essas habilidades são cruciais para a administração de bancos de dados, permitindo que você gerencie o ciclo de vida dos dados, limpe registros desnecessários e mantenha a saúde geral do seu banco de dados MongoDB.