In MongoDB kunt u de $pop
. gebruiken operator om het eerste of laatste element uit een array te verwijderen.
Gebruik $pop
in combinatie met een methode zoals update()
om het opgegeven document met de wijziging bij te werken.
Gebruik -1
om het eerste element te verwijderen, en 1
om de laatste te verwijderen.
Voorbeeld
Stel dat we een verzameling hebben met de naam products
met de volgende documenten:
{ "_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" ] }
Verwijder het eerste element
We kunnen het eerste element van de array in document 1 als volgt verwijderen:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
)
Uitgang:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Dat bericht vertelt ons dat één document overeenkomt en één (d.w.z. hetzelfde document) is gewijzigd.
Laten we de collectie nu eens bekijken:
db.products.find()
Resultaat:
{ "_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" ] }
We kunnen zien dat het eerste element van de array in document 1 is verwijderd.
Verwijder het laatste element
Laten we nu het laatste element uit de array in document 2 verwijderen:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Uitgang:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Laten we nu de collectie nog eens bekijken:
db.products.find()
Resultaat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
We kunnen zien dat het laatste element uit de array is verwijderd in document 2.
Alle documenten bijwerken
Hier is een voorbeeld dat de updateMany()
. gebruikt methode om alle documenten bij te werken:
db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
)
Uitgang:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
En controleer de collectie opnieuw:
db.products.find()
Resultaat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }
Als alternatief kunt u de update()
. gebruiken methode om meerdere documenten bij te werken door multi: true
op te geven .