I MongoDB kan du bruge $push
operator for at tilføje en værdi til en matrix.
Denne operator kan bruges med forskellige modifikatorer, hvoraf en er $position
modifikator. $position
modifikator giver dig mulighed for at angive den position i arrayet, hvor du vil indsætte den nye værdi.
Tilføj værdi til begyndelsen af arrayet
Antag, at vi har følgende samling:
{ "_id" :1, "prod" :"Flagermus", "størrelser" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Hat" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "M", "L" ] }Og antag, at vi vil tilføje en værdi til starten af arrayet i dokument 3.
Vi kan gøre dette:
db.products.update( { _id: 3 }, { $push: { sizes: { $each: [ "S" ], $position: 0 } } } )
Lad os nu tjekke samlingen igen:
db.products.find()
Resultat:
{ "_id" :1, "prod" :"Flagermus", "størrelser" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Hat" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "S", "M", "L" ] }Arrays er nul-baserede, så
position: 0
tilføjer værdien som det første element i arrayet.Tilføj en værdi til midten af arrayet
Antag, at vi vil tilføje værdien
M
til dokument 2, og vi ønsker, at det skal gå mellemS
ogL
.Sådan kan vi gøre det:
db.products.update( { _id: 2 }, { $push: { sizes: { $each: [ "M" ], $position: 1 } } } )
Lad os nu tjekke samlingen igen:
db.products.find()
Resultat:
{ "_id" :1, "prod" :"Flagermus", "størrelser" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Hat" , "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "S", "M" , "L" ] }Vi brugte
$position: 1
, fordi det var den position, vi ønskedeM
at gå (dvs. den anden position).Negative værdier
Du kan også angive en negativ værdi som position. Når du gør dette, indsættes værdien ved den angivne negative position, der tæller tilbage fra slutningen.
Antag, at vi vil indsætte
L
mellemM
ogXL
i dokument 1.Sådan gør vi det ved at bruge en negativ position:
db.products.update( { _id: 1 }, { $push: { sizes: { $each: [ "L" ], $position: -1 } } } )
Tjek resultatet:
db.products.find()
Resultat:
{ "_id" :1, "prod" :"Flagermus", "størrelser" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "prod" :"Hat", "størrelser" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Kasket", "størrelser" :[ "S" , "M", "L" ] }Med en negativ indeksposition, hvis du angiver flere elementer i
$each
array, er det sidst tilføjede element i den angivne position fra slutningen.