Der $unset-Operator in MongoDB
-
der
$unset
-Operator in MongoDB -
Verwenden Sie den Operator
$unset
, um ein Feld aus allen Dokumenten in MongoDB zu löschen
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.