V MongoDB můžete použít $push
operátor k připojení hodnoty k poli.
Tento operátor lze použít s různými modifikátory, jedním z nich je $position
modifikátor. $position
modifikátor umožňuje určit pozici v poli, do které chcete vložit novou hodnotu.
Přidat hodnotu na začátek pole
Předpokládejme, že máme následující kolekci:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Klobouk" , "velikosti" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Kšiltovka", "velikosti" :[ "M", "L" ] }A předpokládejme, že chceme přidat hodnotu na začátek pole v dokumentu 3.
Můžeme to udělat:
db.products.update( { _id: 3 }, { $push: { sizes: { $each: [ "S" ], $position: 0 } } } )
Nyní znovu zkontrolujeme sbírku:
db.products.find()
Výsledek:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Klobouk" , "velikosti" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Kšiltovka", "velikosti" :[ "S", "M", "L" ] }Pole jsou založeny na nule, takže
position: 0
přidá hodnotu jako první prvek v poli.Přidat hodnotu do středu pole
Předpokládejme, že chceme přidat hodnotu
M
do dokumentu 2 a chceme, aby to bylo meziS
aL
.Zde je návod, jak to udělat:
db.products.update( { _id: 2 }, { $push: { sizes: { $each: [ "M" ], $position: 1 } } } )
Nyní znovu zkontrolujeme sbírku:
db.products.find()
Výsledek:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Klobouk" , "velikosti" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Kšiltovka", "velikosti" :[ "S", "M" , "L" ] }Použili jsme
$position: 1
, protože to je pozice, kterou jsme chtěliM
jít (tj. druhá pozice).Záporné hodnoty
Můžete také zadat zápornou hodnotu jako pozici. Když to uděláte, hodnota se vloží na zadanou zápornou pozici a počítá se zpět od konce.
Předpokládejme, že chceme vložit
L
meziM
aXL
v dokumentu 1.Zde je návod, jak na to použijeme zápornou pozici:
db.products.update( { _id: 1 }, { $push: { sizes: { $each: [ "L" ], $position: -1 } } } )
Zkontrolujte výsledek:
db.products.find()
Výsledek:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "prod" :"Klobouk", "velikosti" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Čepice", "velikosti" :[ "S" , "M", "L" ] }Se zápornou pozicí indexu, pokud zadáte více prvků v
$each
pole, poslední přidaný prvek je na zadané pozici od konce.