Count() & Remove() Funktionen in MongoDB mit Beispiel

⚡ Intelligente Zusammenfassung

Die Funktionen Count() und Remove() in MongoDB Ermitteln Sie die Anzahl der Dokumente in einer Sammlung und löschen Sie Dokumente daraus. Die Methode `count()` gibt die Gesamtzahl der Dokumente zurück, während die Methode `remove()` entweder alle Dokumente oder nur diejenigen löscht, die einer bestimmten Bedingung entsprechen.

  • 🔢 Dokumente zählen: Die Methode count() gibt die Anzahl der Dokumente in einer Sammlung oder die Anzahl der Dokumente, die einer Abfrage entsprechen, zurück.
  • 🎯 Zählen mit Filter: Wenn count() eine Bedingung übergibt, werden nur die Dokumente ausgegeben, die diese Bedingung erfüllen.
  • 🗑️ Dokumente entfernen: Die Methode remove() löscht Dokumente, entweder alle oder diejenigen, die einem Kriterienobjekt entsprechen.
  • ☝️ Eins entfernen: Die Option „justOne“ beschränkt die Funktion „remove()“ darauf, nur ein einzelnes übereinstimmendes Dokument anstatt aller Übereinstimmungen zu löschen.
  • 🔄 Moderne Methoden: countDocuments() und deleteMany() ersetzen aktuell die veralteten Funktionen count() und remove().
  • ️ Ausgabe überprüfen: Jeder Befehl liefert ein Ergebnis, das die Anzahl der entfernten Dokumente anzeigt.

Count() & Remove() Funktionen in MongoDB

MongoDB Count()-Funktion

Das Konzept der Aggregation besteht darin, eine Berechnung der Ergebnisse durchzuführen, die in einer Abfrage zurückgegeben werden. Angenommen, Sie möchten beispielsweise wissen, wie viele Dokumente sich in einer Sammlung gemäß der ausgelösten Abfrage befinden MongoDB stellt die Funktion count() bereit.

Beispiel von MongoDB Count()-Funktion

Schauen wir uns dazu ein Beispiel an.

db.Employee.count()

Code Erläuterung:

  • Der obige Code führt die Zählfunktion aus.

Wenn der Befehl erfolgreich ausgeführt wurde, wird die folgende Ausgabe angezeigt

Ausgang:

Beispiel von MongoDB Count()-Funktion

Die Ausgabe zeigt deutlich, dass 4 Dokumente in der Sammlung vorhanden sind.

MongoDB Zählen mit einer Abfragebedingung

Die Methode `count()` ist besonders nützlich, wenn Sie eine Abfragebedingung übergeben, da sie dann nur die übereinstimmenden Dokumente zählt, anstatt die gesamte Sammlung. Dies ist hilfreich für Berichte, beispielsweise zur Anzahl der Mitarbeiter einer Abteilung oder zur Anzahl der noch offenen Bestellungen.

Das folgende Beispiel zählt die Mitarbeiter, deren Mitarbeiter-ID größer als 2 ist:

db.Employee.count({Employeeid:{$gt:2}})

Hier ist was passiert:

  • Das Abfrageobjekt {Employeeid:{$gt:2}} fungiert als Filter und verwendet den Operator $gt (größer als).
  • Die Funktion count() gibt nur die Anzahl der Dokumente zurück, die dem Filter entsprechen.
  • Der Rest der Sammlung wird bei der Gesamtberechnung nicht berücksichtigt.

Im aktuellen MongoDB Bei allen Versionen ist `countDocuments()` die empfohlene Methode für eine bedingte Zählung, da sie stets ein korrektes Ergebnis liefert. Dieselbe Abfrage funktioniert auch damit:

db.Employee.countDocuments({Employeeid:{$gt:2}})

Beide Befehle geben eine einzelne Zahl zurück, die Sie in einer Variablen speichern oder direkt anzeigen können. Durch Hinzufügen eines passenden Index für das abgefragte Feld bleiben bedingte Zählungen auch bei großen Sammlungen schnell.

Durchführung von Änderungen

Die anderen beiden Operationsklassen in MongoDB sind die Update- und Remove-Anweisungen.

Mit den Aktualisierungsvorgängen können vorhandene Daten geändert werden, und mit den Entfernungsvorgängen können Daten aus einer Sammlung gelöscht werden.

Remove() Funktion in MongoDB

In MongoDB, hat das db.collection.remove() Die Methode wird verwendet, um Dokumente aus einer Sammlung zu entfernen. Es können entweder alle Dokumente aus einer Sammlung entfernt werden oder nur diejenigen, die einer bestimmten Bedingung entsprechen.

Wenn Sie einfach den Befehl zum Entfernen ausführen, werden alle Dokumente aus der Sammlung entfernt.

Beispiel von MongoDB Remove()-Funktion

Das folgende Codebeispiel zeigt, wie ein bestimmtes Dokument aus der Sammlung entfernt wird.

db.Employee.remove({Employeeid:22})

Code Erläuterung:

  • Der obige Code verwendet die Remove-Funktion und gibt die Kriterien an, die in diesem Fall darin bestehen, die Dokumente zu entfernen, die die Mitarbeiter-ID 22 haben.

Wenn der Befehl erfolgreich ausgeführt wurde, wird die folgende Ausgabe angezeigt

Ausgang:

Beispiel von MongoDB Remove()-Funktion

Die Ausgabe zeigt an, dass 1 Dokument entfernt wurde.

Alle Dokumente entfernen vs. nur ein einzelnes Dokument

Die Methode `remove()` kann je nach den übergebenen Argumenten entweder alle übereinstimmenden Dokumente oder nur ein einzelnes löschen. Das Verständnis dieses Unterschieds verhindert versehentlichen Datenverlust.

Um alle Dokumente in einer Sammlung zu entfernen, übergeben Sie eine leere Bedingung:

db.Employee.remove({})

Dadurch werden alle Dokumente gelöscht, die Sammlung selbst bleibt jedoch erhalten. Um nur Dokumente zu entfernen, die einer bestimmten Bedingung entsprechen, übergeben Sie ein Abfrageobjekt, wie zuvor mit {Employeeid:22} gezeigt. Wenn mehrere Dokumente übereinstimmen und Sie nur das erste löschen möchten, fügen Sie die Option „justOne“ hinzu.

db.Employee.remove({EmployeeName:"Smith"}, {justOne:true})

Die Hauptunterschiede sind:

  • remove({}) löscht alle Dokumente in der Sammlung.
  • remove({Bedingung}) löscht jedes Dokument, das der Bedingung entspricht.
  • remove({condition}, {justOne:true}) löscht nur das erste übereinstimmende Dokument.

Überprüfen Sie die Bedingung immer doppelt, bevor Sie einen Löschbefehl ausführen, da ein leerer oder falscher Filter die gesamte Sammlung löschen kann. In modernen Systemen MongoDBdeleteOne() und deleteMany() ersetzen diese Muster und machen die Absicht deutlicher.

Moderne Alternativen zu count() und remove()

Sowohl count() als auch remove() sind veraltete Methoden. Neuere MongoDB Die Treiber kennzeichnen sie als veraltet und bieten klarere Alternativen an. Die folgende Tabelle ordnet jeder alten Methode ihre moderne Entsprechung zu:

Legacy-Methode Moderner Ersatz Zweck
Anzahl () countDocuments() Gibt eine genaue Anzahl übereinstimmender Dokumente zurück.
Anzahl () geschätzteDokumentenanzahl() Gibt eine schnelle, ungefähre Anzahl aller Dokumente zurück.
entfernen() deleteOne() Löscht das erste Dokument, das dem Filter entspricht.
entfernen() deleteMany() Löscht alle Dokumente, die dem Filter entsprechen.

Für neue Anwendungen sind diese modernen Methoden vorzuziehen. Sie trennen das Zählen von der Schätzung und das Löschen eines einzelnen Dokuments vom Löschen mehrerer Dokumente, wodurch Abfragen sicherer und lesbarer werden. Die älteren Funktionen `count()` und `remove()` funktionieren weiterhin für ältere Tutorials und Skripte.

Häufig gestellte Fragen

`remove()` löscht Dokumente, behält aber die Sammlung und ihre Indizes bei. `drop()` löscht die gesamte Sammlung, einschließlich aller Dokumente und Indizes. Verwenden Sie `remove` für Daten und `drop()`, um die Sammlung vollständig zu verwerfen.

Nein. `remove()` löscht nur Dokumente innerhalb der Sammlung. Die Sammlung, ihre Indizes und ihre Konfiguration bleiben erhalten, sodass Sie anschließend neue Dokumente in dieselbe Sammlung einfügen können, ohne sie neu erstellen zu müssen.

Die ältere Funktion `count()` kann auf Sharded Clustern nach fehlgeschlagenen Operationen einen Näherungswert zurückgeben. Für eine exakte Gesamtzahl verwenden Sie `countDocuments()`, das eine Aggregation durchführt; verwenden Sie `estimatedDocumentCount()`, wenn Geschwindigkeit wichtiger ist als Genauigkeit.

KI kann eine einfache Anfrage in die korrekte Zähl- oder Löschabfrage mit dem richtigen Filter übersetzen und Sie warnen, wenn ein Löschbefehl alle Dokumente betreffen würde. Überprüfen Sie die Abfrage daher immer vor der Ausführung.

Ja. KI kann einen Befehl zum Entfernen oder Löschen vieler Elemente überprüfen, einen fehlenden Filter kennzeichnen, der die gesamte Sammlung löschen würde, und vorschlagen, eine Bedingung hinzuzufügen oder vor der Ausführung eine Sicherungskopie zu erstellen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: