MongoDB-Daten löschen

MongoDBMongoDBBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Labyrinth lernen Sie, wie Sie Daten effektiv aus einer MongoDB-Datenbank löschen. Sie beginnen mit dem Löschen eines einzelnen Dokuments und erkunden dann Techniken für das Ausführen von Massenlöschungen und das Entfernen von Daten basierend auf bestimmten Bedingungen. Schließlich lernen Sie, wie Sie eine gesamte Sammlung leeren und die Löschresultate überprüfen. Diese Fähigkeiten sind unerlässlich für das Verwalten Ihrer MongoDB-Datenbank und die Aufrechterhaltung der Datengüte.

Das Labyrinth umfasst die folgenden Schritte: Einzelnes Dokument löschen, Massenlöschungen ausführen, Entfernen basierend auf Bedingungen, Sammlungsdaten löschen und Löschresultate überprüfen. Am Ende dieses Labyrinths werden Sie eine solide Vorstellung davon haben, wie Sie Daten in MongoDB mit verschiedenen Methoden löschen können, um Ihren Anforderungen gerecht zu werden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/AggregationOperationsGroup(["Aggregation Operations"]) mongodb/BasicOperationsGroup -.-> mongodb/start_mongodb_shell("Start MongoDB Shell") mongodb/BasicOperationsGroup -.-> mongodb/delete_document("Delete Document") mongodb/BasicOperationsGroup -.-> mongodb/bulk_delete_documents("Bulk Delete Documents") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/AggregationOperationsGroup -.-> mongodb/aggregate_group_totals("Aggregate Group Totals") subgraph Lab Skills mongodb/start_mongodb_shell -.-> lab-420822{{"MongoDB-Daten löschen"}} mongodb/delete_document -.-> lab-420822{{"MongoDB-Daten löschen"}} mongodb/bulk_delete_documents -.-> lab-420822{{"MongoDB-Daten löschen"}} mongodb/find_documents -.-> lab-420822{{"MongoDB-Daten löschen"}} mongodb/query_with_conditions -.-> lab-420822{{"MongoDB-Daten löschen"}} mongodb/aggregate_group_totals -.-> lab-420822{{"MongoDB-Daten löschen"}} end

Einzelnes Dokument löschen

In diesem Schritt lernen wir, wie wir ein einzelnes Dokument in MongoDB mit der deleteOne()-Methode löschen. Öffnen Sie zunächst die MongoDB-Shell:

mongosh

Erstellen wir eine Beispielsammlung mit einigen Dokumenten, um das Löschen zu üben:

use mylab_database
db.users.insertMany([
    { name: "John Doe", age: 30, email: "[email protected]" },
    { name: "Jane Smith", age: 25, email: "[email protected]" },
    { name: "Bob Johnson", age: 35, email: "[email protected]" }
])

Beispielausgabe:

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

Um ein einzelnes Dokument zu löschen, verwenden wir die deleteOne()-Methode. Mit dieser Methode können Sie ein bestimmtes Dokument anhand einer eindeutigen Kennung oder eines bestimmten Kriteriums entfernen:

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

Erwartete Ausgabe:

{ acknowledged: true, deletedCount: 1 }

Zergliedern wir den Befehl:

  • deleteOne() entfernt nur das erste Dokument, das den angegebenen Kriterien entspricht
  • Stimmen mehrere Dokumente überein, wird nur das erste gelöscht
  • Die Methode gibt ein Objekt zurück, das acknowledged (Operation erfolgreich) und deletedCount (Anzahl der gelöschten Dokumente) enthält

Überprüfen Sie die Löschung, indem Sie alle Benutzer auflisten:

db.users.find()

Die erwartete Ausgabe zeigt nur zwei Dokumente für John Doe und Bob Johnson an.

Massenlöschungen ausführen

In diesem Schritt werden wir untersuchen, wie wir in MongoDB mit der deleteMany()-Methode mehrere Dokumente auf einmal löschen.

Erstellen wir einige Beispiel-Daten:

use mylab_database
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" }
])

Beispielausgabe:

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

Verwenden Sie jetzt deleteMany(), um alle Benutzer mit dem Status "inaktiv" zu entfernen:

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

Erwartete Ausgabe:

{ acknowledged: true, deletedCount: 3 }

Wichtige Punkte zu deleteMany():

  • Entfernt alle Dokumente, die den angegebenen Kriterien entsprechen
  • Gibt die Gesamtzahl der gelöschten Dokumente zurück
  • Liefert einen effizienten Weg, um mehrere Datensätze gleichzeitig zu entfernen

Überprüfen Sie die verbleibenden Dokumente:

db.users.find()

Die erwartete Ausgabe zeigt nur die aktiven Benutzer in der Sammlung an.

Entfernen basierend auf Bedingungen

In diesem Schritt lernen wir, wie wir in MongoDB Dokumente mit komplexen Bedingungen löschen.

Erstellen Sie eine Beispielsammlung:

use mylab_database
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 }
])

Beispielausgabe:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("..."),
    '3': ObjectId("...")
  }
}
  1. Entfernen Sie Mitarbeiter, die älter als 40 Jahre sind:
db.employees.deleteMany({ age: { $gt: 40 } })

Erwartete Ausgabe:

{ acknowledged: true, deletedCount: 1 }

Erklärung:

  • Der $gt-Operator bedeutet "größer als"
  • Dieser Befehl löscht Dokumente, bei denen das Alter größer als 40 ist
  1. Entfernen Sie Mitarbeiter aus der Verkaufsabteilung mit einem Gehalt von weniger als 55000:
db.employees.deleteMany({
    department: "Sales",
    salary: { $lt: 55000 }
})

Erwartete Ausgabe:

{ acknowledged: true, deletedCount: 1 }

Erklärung:

  • $lt bedeutet "weniger als"
  • Löscht Dokumente, die sowohl den Abteilungs- als auch das Gehaltskriterium erfüllen

Überprüfen Sie die verbleibenden Dokumente:

db.employees.find()

Sammlungsdaten löschen

In diesem Schritt werden wir Methoden zur vollständigen Bereinigung von Daten aus einer MongoDB-Sammlung untersuchen.

Erstellen Sie eine Beispielsammlung:

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

Methode 1: Alle Dokumente mit deleteMany() entfernen:

db.products.deleteMany({})

Erwartete Ausgabe:

{ acknowledged: true, deletedCount: 3 }

Erklärung:

  • Entfernt alle Dokumente, ohne die Sammlungstruktur zu löschen
  • Ein leerer Filter {} zielt auf alle Dokumente

Überprüfen Sie, ob die Sammlung leer ist:

db.products.find()

Methode 2: Die gesamte Sammlung mit drop() entfernen:

Fügen Sie die Beispiel-Daten erneut hinzu:

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

Löschen Sie die Sammlung:

db.products.drop()

Erwartete Ausgabe:

true

Erklärung:

  • Entfernt die Sammlung und ihre Metadaten vollständig
  • Permanente Löschung der gesamten Sammlung

Versuchen Sie, die Sammlung aufzurufen:

db.products.find()

Dies führt zu einem Fehler, der angibt, dass die Sammlung nicht mehr existiert.

Löschungsergebnisse überprüfen

In diesem letzten Schritt werden wir Techniken zur Überprüfung von Löschvorgängen in MongoDB untersuchen.

Erstellen Sie eine Beispielsammlung:

db.employees.insertMany([
    { name: "Alice", department: "HR", salary: 50000 },
    { name: "Bob", department: "Sales", salary: 45000 },
    { name: "Charlie", department: "Marketing", salary: 55000 },
    { name: "David", department: "Sales", salary: 40000 }
])
  1. Entfernen Sie Mitarbeiter mit geringem Gehalt und überprüfen Sie:
db.employees.deleteMany({ salary: { $lt: 45000 } })
const remainingEmployees = db.employees.countDocuments()
print("Remaining employees:", remainingEmployees)

Erwartete Ausgabe:

Remaining employees: 5
  1. Überprüfen Sie die Löschung mit find():
const lowSalaryEmployees = db.employees.find({ salary: { $lt: 45000 } }).count()
print("Low salary employees after deletion:", lowSalaryEmployees)

Erwartete Ausgabe:

Low salary employees after deletion: 0
  1. Überprüfen Sie die Anzahl von Mitarbeitern in einer bestimmten Abteilung:
const salesEmployees = db.employees.countDocuments({ department: "Sales" })
print("Sales department employees:", salesEmployees)

Erwartete Ausgabe:

Sales department employees: 1

Komplette Überprüfung:

print("Total employees:", db.employees.countDocuments())
print("Employees by department:")
db.employees.aggregate([
    { $group: { _id: "$department", count: { $sum: 1 } } }
])

Die erwartete Ausgabe zeigt die Gesamtzahl der Mitarbeiter und die Aufteilung nach Abteilung an.

[
  { _id: 'Marketing', count: 2 },
  { _id: 'Sales', count: 1 },
  { _id: 'HR', count: 2 }
]

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie einzelne Dokumente mit der deleteOne()-Methode löschen, die das erste Dokument entfernt, das den angegebenen Kriterien entspricht. Sie haben auch die Durchführung von Massenlöschungen mit der deleteMany()-Methode untersucht, die es Ihnen ermöglicht, mehrere Datensätze effizient zu entfernen, die bestimmten Bedingungen entsprechen. Darüber hinaus haben Sie gelernt, wie Sie Dokumente nach Bedingungen entfernen, die Daten einer gesamten Sammlung bereinigen und die Löschungsergebnisse überprüfen.

Die wichtigsten Erkenntnisse aus diesem Lab sind die verschiedenen Ansätze zum Löschen von Daten in MongoDB, von der Entfernung einzelner Dokumente bis hin zur Durchführung von Massenlöschungen basierend auf bestimmten Kriterien. Diese Fähigkeiten sind unerlässlich für die effektive Verwaltung Ihrer Datenbank und die Aufrechterhaltung der Datengüte.