sql >> Databasteknik >  >> NoSQL >> MongoDB

3 sätt att ta bort ett värde från en array i MongoDB

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

  1. Returnerar värde från asynkron funktion node.js

  2. explain() i Mongodb:skillnader mellan nscanned och nscannedObjects

  3. Hur installerar man tidigare version av mongodb med homebrew?

  4. Är redis en hållbar databutik?