I MongoDB kan du bruge $pop
operator for at fjerne det første eller sidste element fra et array.
Brug $pop
i forbindelse med en metode såsom update()
for at opdatere det angivne dokument med ændringen.
Brug -1
for at fjerne det første element og 1
for at fjerne den sidste.
Eksempel
Antag, at vi har en samling kaldet products
med følgende dokumenter:
{ "_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" ] }
Fjern det første element
Vi kan fjerne det første element i arrayet i dokument 1 på denne måde:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
)
Output:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Den meddelelse fortæller os, at et dokument matchede, og et (dvs. det samme dokument) blev ændret.
Lad os tage et kig på kollektionen nu:
db.products.find()
Resultat:
{ "_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" ] }
Vi kan se, at det første element i arrayet i dokument 1 er blevet fjernet.
Fjern det sidste element
Lad os nu fjerne det sidste element fra arrayet i dokument 2:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Output:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Lad os nu tjekke samlingen igen:
db.products.find()
Resultat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Vi kan se, at det sidste element er blevet fjernet fra arrayet i dokument 2.
Opdater alle dokumenter
Her er et eksempel, der bruger updateMany()
metode til at opdatere alle dokumenter:
db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
)
Output:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
Og tjek samlingen igen:
db.products.find()
Resultat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }
Alternativt kan du bruge update()
metode til at opdatere flere dokumenter ved at angive multi: true
.