Om du har en samling dokument i MongoDB som innehåller arrayer kan du lägga till nya värden till dessa arrayer om det behövs.
Beroende på dina specifika krav kan du använda $push
operatorn eller $addToSet
operatör.
$push
Operatör
Anta att vi har en samling som heter products
med följande dokument:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Hatt" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "M", "L" ] }Och låt oss säga att vi vill lägga till ett värde till arrayen i dokument 3.
Vi kan använda
$push
i kombination medupdate()
för att lägga till värdet:db.products.update( { _id: 3 }, { $push: { sizes: "XL" } } )
Låt oss titta på samlingen igen för att verifiera ändringen:
db.products.find()
Resultat:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Hatt" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "M", "L", "XL" ] }Vi kan se att värdet
XL
har lagts till i arrayen i dokument 3.
$push
operatorn kan också användas med olika modifierare, såsom$position
,$sort
och$slice
.Du kan också lägga till flera värden till arrayen genom att använda
$each
modifierare.Se MongoDB
$push
för exempel.
$addToSet
Operatör
$addToSet
operatorn fungerar på liknande sätt som$push
, förutom ett par saker:
- Om värdet du försöker lägga till redan finns i arrayen kommer det inte att läggas till.
$position
,$sort
och$slice
modifierare kan inte användas med$addToSet
.
Anta att vår samling ser ut så här:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Hatt", "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "S", "M" , "L", "XL" ] }
Låt oss infoga flera värden i arrayen i dokument 2:
db.products.update(
{ _id: 2 },
{
$addToSet: {
sizes: {
$each: [ "XXL", "XXXL" ]
}
}
}
)
Låt oss nu kontrollera samlingen igen:
db.products.find()
Resultat:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Hatt", "sizes" :[ "S", "L", "XL", "XXL", "XXXL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "S", "M", "L", "XL" ] }
Vi kan se att de två värdena lades till arrayen i dokument 2 som förväntat.
Det här exemplet använder $each
modifierare, som du också kan använda med $push
operatör.
Jag använde bara $each
modifierare eftersom jag lade till flera värden. Om jag bara använde ett värde, kunde jag ha utelämnat $each
modifierare, och syntaxen skulle ha sett mer ut som ovanstående $push
exempel.
Som nämnts, om värdet redan finns, kommer det inte att läggas till. Om du lägger till en array med båda operatorerna kommer hela arrayen att läggas till som ett separat värde inom den befintliga arrayen.
Se MongoDB $addToSet
för fler exempel.