In MongoDB können Sie den $pop
verwenden Operator zum Entfernen des ersten oder letzten Elements aus einem Array.
Verwenden Sie $pop
in Verbindung mit einer Methode wie update()
um das angegebene Dokument mit der Änderung zu aktualisieren.
Verwenden Sie -1
um das erste Element zu entfernen, und 1
um das letzte zu entfernen.
Beispiel
Angenommen, wir haben eine Sammlung namens products
mit folgenden Dokumenten:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Entfernen Sie das erste Element
Wir können das erste Element des Arrays in Dokument 1 wie folgt entfernen:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
)
Ausgabe:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Diese Nachricht teilt uns mit, dass ein Dokument übereinstimmte und eines (d. h. dasselbe Dokument) geändert wurde.
Werfen wir jetzt einen Blick auf die Sammlung:
db.products.find()
Ergebnis:
{ "_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" ] }
Wir können sehen, dass das erste Element des Arrays in Dokument 1 entfernt wurde.
Entferne das letzte Element
Entfernen wir nun das letzte Element aus dem Array in Dokument 2:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Ausgabe:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Lassen Sie uns nun die Sammlung erneut ü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" ] }
Wir können sehen, dass das letzte Element aus dem Array in Dokument 2 entfernt wurde.
Alle Dokumente aktualisieren
Hier ist ein Beispiel, das updateMany()
verwendet Methode zum Aktualisieren aller Dokumente:
db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
)
Ausgabe:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
Und überprüfen Sie die Sammlung erneut:
db.products.find()
Ergebnis:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }
Alternativ können Sie das update()
verwenden Methode zum Aktualisieren mehrerer Dokumente durch Angabe von multi: true
.