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 .