sql >> Database >  >> NoSQL >> MongoDB

3 manieren om een ​​waarde uit een array in MongoDB te verwijderen

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" ] }

  1. Voorbeeld om socket.io-redis . te gebruiken

  2. 3 eenvoudige stappen om MongoDB Sharded-clusters te maken

  3. Java/MongoDB-zoekopdracht op datum

  4. Update entiteit in redis met spring-data-redis