I MongoDB kan du använda $pop
operator för att ta bort det första eller sista elementet från en array.
Använd $pop
i kombination med en metod som update()
för att uppdatera det angivna dokumentet med ändringen.
Använd -1
för att ta bort det första elementet och 1
för att ta bort den sista.
Exempel
Anta att vi har en samling som heter products
med följande dokument:
{ "_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" ] }
Ta bort det första elementet
Vi kan ta bort det första elementet i arrayen i dokument 1 så här:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
)
Utdata:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Det meddelandet talar om för oss att ett dokument matchade och ett (dvs samma dokument) har ändrats.
Låt oss ta en titt 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 att det första elementet i arrayen i dokument 1 har tagits bort.
Ta bort det sista elementet
Låt oss nu ta bort det sista elementet från arrayen i dokument 2:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Utdata:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Låt oss nu kontrollera 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 att det sista elementet har tagits bort från arrayen i dokument 2.
Uppdatera alla dokument
Här är ett exempel som använder updateMany()
metod för att uppdatera alla dokument:
db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
)
Utdata:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
Och kontrollera 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 använda update()
metod för att uppdatera flera dokument genom att ange multi: true
.