Der $unset-Operator in MongoDB

Shihab Sikder 20 Juni 2023
  1. der $unset-Operator in MongoDB
  2. Verwenden Sie den Operator $unset, um ein Feld aus allen Dokumenten in MongoDB zu löschen
Der $unset-Operator in MongoDB

In diesem Artikel wird erläutert, wie der Operator $unset in MongoDB funktioniert. Darüber hinaus demonstrieren wir das Löschen eines Felds aus allen Dokumenten in der MongoDB-Sammlung mit diesem Operator.

der $unset-Operator in MongoDB

$unset ist ein Operator, der zum Löschen eines Felds aus einer Entität verwendet wird. Es wird in der update-Methode in MongoDB verwendet und wirkt sich nicht aus, wenn in der besagten Methode keine Übereinstimmung gefunden wird.

Angenommen, Sie haben die folgenden Dokumente in der MongoDB-Datenbank:

> db.employee.find().pretty()
{"_id":1,   "name":"Alice", "salary": 1500}
{"_id":2,   "name":"Bob",   "salary": 2500}
{"_id":3,   "name":"Jhon",  "salary": 3500, "role":"Owner"}
{"_id":4,   "name":"Grace", "salary": 4500}

Sie haben 4 Entitäten im Dokument und die Methode find() wird ohne Parameter verwendet. Es gibt alle Entitäten in der Sammlung employee zurück, und pretty() wird zum formatierten Drucken der Entität verwendet.

Angenommen, Sie möchten das Feld Rolle aus irgendeinem Grund nicht anzeigen. Sie sollten es also aus der Zeile löschen.

Die Abfrage sollte folgende sein:

> db.employee.update({_id:3}, {$unset : {"role":""}} )
> db.employee.find().pretty()
{"_id":1,   "name":"Alice", "salary": 1500}
{"_id":2,   "name":"Bob",   "salary": 2500}
{"_id":3,   "name":"Jhon",  "salary": 3500}
{"_id":4,   "name":"Grace", "salary": 4500}

Nun wird das Feld role aus dem ersten passenden Dokument gelöscht, wobei id = 3.

Eine andere Option namens multi, eine Kurzform für multiple, hat standardmäßig den Wert false.

Wenn ihr Wert true ist, wirkt sich dies auf die update-Abfrage auf alle übereinstimmenden Dokumente aus.

Verwenden Sie den Operator $unset, um ein Feld aus allen Dokumenten in MongoDB zu löschen

Angenommen, Sie wurden gebeten, das Feld Gehalt aus allen Dokumenten in der MongoDB-Sammlung zu entfernen. Wenn wir den update-Befehl einmal für jede ID verwenden, dauert es länger.

Vielmehr sollten wir Folgendes tun:

> db.employee.update({}, {$unset:{"salary": ""}}, {multi: true})
> db.employee.find().pretty()
{"_id":1,   "name":"Alice"  }
{"_id":2,   "name":"Bob"    }
{"_id":3,   "name":"Jhon"   }
{"_id":4,   "name":"Grace"  }

Wir haben ein leeres Objekt in der Abfrage update verwendet und true in multi gesetzt. Grundsätzlich wählt {} alle Dokumente im Objekt aus, und {multi: true} wirkt sich auf alle übereinstimmenden Dokumente aus der update-Methode aus.

Hier sind die grundlegenden Formate (aus der offiziellen Dokumentation):

db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)
db.collection.replaceOne(<filter>, <update>, <options>)

In der update-Methode können Sie die $unset-Operatoren verwenden, und in den options können Sie multi verwenden.

Lesen Sie mehr über den Operator $unset in der offiziellen Dokumentation.

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

Verwandter Artikel - MongoDB Operator