MongoDB tillhandahåller några operatorer som gör att du kan ta bort värden från arrayer.
Dessa inkluderar:
$pull
$pullAll
$pop
$pull
Operatör
$pull
operatorn tar bort från en befintlig matris alla instanser av ett värde eller värden som matchar ett angivet villkor.
Anta att vi har en samling som heter products
med följande dokument:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
Vi kan ta bort ett element från arrayen i dokument 1 så här:
db.products.update(
{ _id: 1 },
{ $pull: { sizes: "XXL" } }
)
När vi nu kontrollerar samlingen kan vi se den XXL
har tagits bort från dokument 1 som specificerat:
db.products.find()
Resultat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
$pullAll
Operatör
$pullAll
operatorn tar bort alla instanser av de angivna värdena från arrayen.
Anta att vi har en samling med följande dokument:
{ "_id" : 1, "bar" : [ 1, 7, 2, 3, 8, 7, 1 ] } { "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] } { "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
Och vi vill ta bort alla värden för 7
från arrayen i dokument 1.
Vi kan göra detta:
db.foo.update(
{ _id: 1 },
{ $pullAll: { bar: [ 7 ] } }
)
Detta tar bort båda förekomsterna av 7 från arrayen i dokument 1.
Vi kan verifiera detta genom att kontrollera samlingen:
db.foo.find()
Resultat:
{ "_id" : 1, "bar" : [ 1, 2, 3, 8, 1 ] } { "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] } { "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }
Vi kan se att arrayen i dokument 1 har haft alla sina 7
värden har tagits bort som specificerat.
Medan $pullAll
liknar $pull
, skillnaden är att $pullAll
tar bort element som matchar de listade värdena. Detta är till skillnad från $pull
, där du tar bort värden genom att ange en fråga.
$pop
Operatör
$pop
operatorn tar bort det första eller sista elementet i en array.
Ange värdet -1
för att ta bort det första elementet och 1
för att ta bort den sista.
Anta att vi har en samling som heter products
med följande dokument:
{ "_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" ] }
Följande kod tar bort det sista elementet från arrayen i dokument 1:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Vi kan verifiera detta genom att kontrollera samlingen:
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" ] }