MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

4 Möglichkeiten zum Löschen eines Dokuments in MongoDB

Wenn Sie in MongoDB ein Dokument in der Mongo-Shell löschen müssen, können Sie Folgendes verwenden:

  • Der db.collection.remove() Methode
  • Das delete Befehl
  • Der db.collection.deleteOne() Methode
  • Der db.collection.deleteMany() Methode

Dieser Artikel enthält jeweils Beispiele.

Der db.collection.remove() Methode

Die db.collection.remove() -Methode entfernt (d. h. löscht) Dokumente aus einer Sammlung. Sie können je nach Bedarf alle Dokumente, einige Dokumente oder ein einzelnes Dokument löschen.

Hier ist ein Beispiel für das Löschen eines bestimmten Dokuments.

db.employees.remove({ "_id": 3 })

Ergebnis:

WriteResult({ "nRemoved" : 1 })

Das löscht das Dokument mit einer _id Wert von 3 von den employees Sammlung.

Es muss jedoch nicht mit einem einzelnen Dokument übereinstimmen. Die Filterkriterien können mit mehreren Dokumenten übereinstimmen, und Sie können die Filterkriterien sogar leer lassen, um mit allen Dokumenten übereinzustimmen (d. h. alle Dokumente zu löschen).

Hier ist ein Beispiel für das Löschen aller Dokumente:

db.employees.remove({})

Ergebnis:

WriteResult({ "nRemoved" : 5 })

Das Ergebnis zeigt uns, dass fünf Dokumente entfernt wurden (die Sammlung enthielt also offensichtlich fünf Dokumente, bevor wir sie alle gelöscht haben).

Das remove() -Methode akzeptiert auch einen justOne -Parameter, um das Entfernen auf nur ein Dokument zu beschränken. Dadurch wird das erste Dokument gelöscht, das den Löschkriterien entspricht.

Beispiel:

db.employees.remove({}, "justOne: true")

Ergebnis:

WriteResult({ "nRemoved" : 1 })

In diesem Fall ist unser Filterkriterium ein leeres Dokument und passt daher zu allen Dokumenten in der Sammlung. Allerdings wird nur ein Dokument gelöscht, da wir justOne: true verwenden .

Das delete Befehl

Das delete Befehl macht genau dasselbe wie remove() Methode. Tatsächlich ist das remove() Methode verwendet den Löschbefehl.

Hier ist ein Beispiel für das Löschen eines bestimmten Dokuments mit delete Befehl.

db.runCommand(
   {
      delete: "employees",
      deletes: [ { q: { _id: 4 }, limit: 1 } ]
   }
)

Ergebnis:

{ "n" : 1, "ok" : 1 }

Der db.collection.deleteOne() Methode

Die db.collection.deleteOne() Die Methode ähnelt der db.collection.remove() -Methode, außer dass sie nur ein Dokument aus der angegebenen Sammlung löscht.

Es akzeptiert eine Filterbedingung, genau wie db.collection.remove() .

Beispiel:

db.employees.deleteOne({ "_id": 4 })

Ergebnis:

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

Dadurch wurde Mitarbeiter Nummer 4 gelöscht.

Wenn Sie einen umfassenderen Filter bereitstellen, der mehrere Dokumente zurückgibt, wird nur das erste gelöscht.

Folgendes löscht beispielsweise das erste Dokument in der Sammlung, unabhängig davon, wie viele Dokumente sich in der Sammlung befinden:

db.employees.deleteOne({})

Die db.collection.deleteOne() kann eine praktische Methode sein, wenn Sie befürchten, versehentlich mehrere Dokumente zu löschen. Die meisten Dokumente, die gelöscht werden, sind eins. Wenn Sie also einen Fehler machen, werden Sie nicht versehentlich alle Dokumente aus der Sammlung entfernen (es sei denn, es gibt natürlich nur ein Dokument in der Sammlung).

Die db.collection.deleteMany() Methode

Die db.collection.deleteMany() -Methode ähnelt db.collection.deleteOne() außer dass es mehrere Dokumente löschen kann.

Eigentlich ist es wahrscheinlich eher wie remove() , da es mehrere Dokumente und ein einzelnes Dokument entfernen kann (obwohl es nicht die justOne Parameter wie remove() tut).

Diese Methode kann praktisch sein, wenn Sie alle Dokumente löschen möchten, die einem bestimmten Kriterium entsprechen.

Beispiel:

db.employees.deleteMany({ "salary": { $gt: 80000 } })

Ergebnis:

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

Dadurch wurden alle Dokumente gelöscht, die ein salary haben Feld über 80000. In diesem Fall stimmten nur zwei Dokumente überein, aber es hätte eine beliebige Zahl sein können.

Sie können auch db.collection.deleteMany() verwenden um alle Dokumente aus der Sammlung zu löschen.

Beispiel:

db.employees.deleteMany({})

Ergebnis:

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

In diesem Fall gab es fünf Dokumente in der Sammlung und alle fünf wurden gelöscht.

Weitere Informationen

Die obigen Methoden akzeptieren auch eine Reihe optionaler Argumente, wie z. B. writeConcern und collation .

deleteOne() und deleteMany() auch einen hint akzeptieren Argument.

Nachfolgend finden Sie Links zur MongoDB-Dokumentation für jede Methode/jeden Befehl:

  • db.collection.remove()
  • delete
  • db.collection.deleteOne()
  • db.collection.deleteMany()