MongoDB bietet einige Operatoren, mit denen Sie Werte aus Arrays entfernen können.
Dazu gehören:
$pull
$pullAll
$pop
Der $pull
Betreiber
Der $pull
-Operator entfernt aus einem bestehenden Array alle Instanzen eines Werts oder von Werten, die einer angegebenen Bedingung entsprechen.
Angenommen, wir haben eine Sammlung namens products
mit folgenden Dokumenten:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
Wir können ein Element aus dem Array in Dokument 1 wie folgt entfernen:
db.products.update(
{ _id: 1 },
{ $pull: { sizes: "XXL" } }
)
Wenn wir jetzt die Sammlung überprüfen, können wir diesen XXL
sehen wurde wie angegeben aus Dokument 1 entfernt:
db.products.find()
Ergebnis:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
Der $pullAll
Betreiber
Die $pullAll
Operator entfernt alle Instanzen der angegebenen Werte aus dem Array.
Angenommen, wir haben eine Sammlung mit den folgenden Dokumenten:
{ "_id" : 1, "bar" : [ 1, 7, 2, 3, 8, 7, 1 ] } { "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] } { "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
Und wir wollen alle Werte von 7
entfernen aus dem Array in Dokument 1.
Wir können dies tun:
db.foo.update(
{ _id: 1 },
{ $pullAll: { bar: [ 7 ] } }
)
Dadurch werden beide Vorkommen von 7 aus dem Array in Dokument 1 entfernt.
Wir können dies überprüfen, indem wir die Sammlung überprüfen:
db.foo.find()
Ergebnis:
{ "_id" : 1, "bar" : [ 1, 2, 3, 8, 1 ] } { "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] } { "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
Wir können sehen, dass das Array in Dokument 1 alle seine 7
hatte Werte wie angegeben entfernt.
Während $pullAll
ähnelt $pull
, der Unterschied ist, dass $pullAll
entfernt Elemente, die den aufgelisteten Werten entsprechen. Dies unterscheidet sich von $pull
, wo Sie Werte entfernen, indem Sie eine Abfrage angeben.
Der $pop
Betreiber
Der $pop
Operator entfernt das erste oder letzte Element eines Arrays.
Geben Sie einen Wert von -1
an um das erste Element zu entfernen, und 1
um das letzte zu entfernen.
Angenommen, wir haben eine Sammlung namens products
mit folgenden Dokumenten:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Der folgende Code entfernt das letzte Element aus dem Array in Dokument 1:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Wir können dies überprüfen, indem wir die Sammlung überprüfen:
db.products.find()
Ergebnis:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }