MongoDB biedt een aantal operators waarmee u waarden uit arrays kunt verwijderen.
Deze omvatten:
$pull
$pullAll
$pop
De $pull
Operator
De $pull
operator verwijdert uit een bestaande array alle instanties van een waarde of waarden die overeenkomen met een gespecificeerde voorwaarde.
Stel dat we een verzameling hebben met de naam products
met de volgende documenten:
{ "_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" ] }
We kunnen een element als volgt uit de array in document 1 verwijderen:
db.products.update(
{ _id: 1 },
{ $pull: { sizes: "XXL" } }
)
Als we nu de collectie controleren, kunnen we zien dat XXL
is verwijderd uit document 1 zoals gespecificeerd:
db.products.find()
Resultaat:
{ "_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" ] }
De $pullAll
Operator
De $pullAll
operator verwijdert alle instanties van de opgegeven waarden uit de array.
Stel we hebben een collectie met de volgende documenten:
{ "_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 ] }
En we willen alle waarden van 7
. verwijderen uit de array in document 1.
We kunnen dit:
db.foo.update(
{ _id: 1 },
{ $pullAll: { bar: [ 7 ] } }
)
Dit verwijdert beide exemplaren van 7 uit de array in document 1.
We kunnen dit verifiëren door de collectie te controleren:
db.foo.find()
Resultaat:
{ "_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 ] }
We kunnen zien dat de array in document 1 al zijn 7
. heeft gehad waarden verwijderd zoals gespecificeerd.
Terwijl $pullAll
lijkt op $pull
, het verschil is dat $pullAll
verwijdert elementen die overeenkomen met de vermelde waarden. Dit is anders dan $pull
, waar u waarden verwijdert door een zoekopdracht op te geven.
De $pop
Operator
De $pop
operator verwijdert het eerste of laatste element van een array.
Geef een waarde op van -1
om het eerste element te verwijderen, en 1
om de laatste te verwijderen.
Stel dat we een verzameling hebben met de naam products
met de volgende documenten:
{ "_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" ] }
De volgende code verwijdert het laatste element uit de array in document 1:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
We kunnen dit verifiëren door de collectie te controleren:
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" ] }