Unterschied zwischen deleteMany() und Remove() in MongoDB

Shihab Sikder 30 Januar 2023
  1. Parameter und Rückgaben von deleteMany() in MongoDB
  2. Parameter und Rückgaben von remove() in MongoDB
Unterschied zwischen deleteMany() und Remove() in MongoDB

deleteMany() und remove() werden beide zum Löschen von Einträgen aus MongoDB verwendet. In der aktuellen Version ist remove als veraltet gekennzeichnet.

Vielmehr schlägt MongoDB die Verwendung von deleteMany und deleteOne vor. Der Befehl deleteMany kann einen Parameter akzeptieren, der vor dem Löschen abgeglichen werden soll.

Parameter und Rückgaben von deleteMany() in MongoDB

Diese Methode stammt vom Mongosh. Im Allgemeinen wird es in der Sammlung verwendet, um die Dokumente in einer bestimmten Sammlung zu löschen.

So wird es verwendet.

db.collection.deleteMany(
    <FILTER>,{
        writeConcern: <document>,
        collation: <document>
    }
)

Der <FILTER> bedeutet, dass wir unser benutzerdefiniertes Suchfeld verwenden können. Angenommen, wir möchten alle Produkte löschen, deren Preis 30 entspricht.

Dann lautet der Code:

db.collection.deleteMany({
    price:30
})

Wir können den anderen Parameter hier leer setzen. Wenn Sie die gesamte Sammlung löschen möchten, fügen Sie {} in deleteMany ein.

Hier erfahren Sie mehr über writeConcern und collation.

Parameter Typ Beschreibung
writeConcern Dokumentieren Es ist ein optionaler Parameter. Es setzt eine Bestätigung für das Dokument. Um mehr über writeConcern zu erfahren, besuchen Sie diesen Blog.
collation Dokumentieren Es ermöglicht dem Benutzer, sprachspezifische Regeln für das Dokument zu verwenden. Die Sortierung ist ein optionaler Parameter. Wenn Sie es verwenden, müssen Sie das Feld lokal verwenden. Hier ist mehr über die collation.

deleteMany() gibt acknowledged als true zurück, wenn die Funktion mit dem Parameter writeConcern ausgeführt wird; ansonsten false. Sie gibt auch den deleteCount zurück, der sich darauf bezieht, wie viele Dokumente gelöscht wurden.

deleteMany löscht alle Dokumente, die dem Filter entsprechen.

Eine Musterrückgabe kann wie folgt aussehen.

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

Parameter und Rückgaben von remove() in MongoDB

Die remove()-Methode hat zwei Funktionalitäten. Es kann auch als deleteMany und deleteOne fungieren.

Der Vorlagencode für remove() ist hier.

db.collection.remove(
   <query>,
   <justOne>
)

Im Allgemeinen werden diese beiden Parameter verwendet. Sie können dies auch auf Folgendes erweitern.

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>,
     collation: <document>
   }
)

writeConcern und collation sind dieselben, die wir oben für deleteMany() besprochen haben. Hier können wir anstelle eines Filters die query verwenden.

Um mehr über die query in MongoDB zu erfahren, können Sie den folgenden Link besuchen.

Wenn wir in der Methode remove ein leeres Objekt übergeben, werden alle Dokumente aus der Sammlung entfernt. Angenommen, Sie haben eine Product-Sammlung und möchten alle Produkte mit einem Preis unter 5 entfernen.

Dann lautet der Befehl:

db.products.remove(
    {price:{ $lt: 5}}
)

Wenn wir diesen Befehl eingeben, ist der Parameter justOne standardmäßig false. Wenn Sie nun nur ein Element für dieselbe Abfrage löschen möchten, lautet der Befehl wie folgt.

db.products.remove(
    {price:{ $lt: 5}}, true
)

Diese Methode gibt ein Objekt namens WriteResult zurück, das die folgenden Parameter hat.

WriteResult({ "nRemoved" : 10 })

Es hat auch writeError und writeConcern; diese beziehen sich auf writeConcern oben.

Das remove() ist in der neueren Version von MongoDB veraltet. Bei der Entwicklung der NodeJS-App sollten Sie also nur deleteOne oder deleteMany verwenden.

Um mehr über remove() zu erfahren, besuchen Sie die folgenden Websites.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website