Dans MongoDB, vous pouvez utiliser le $push
opérateur pour ajouter une valeur à un tableau.
Cet opérateur peut être utilisé avec divers modificateurs, dont l'un est le $position
modificateur. La $position
Le modificateur vous permet de spécifier la position dans le tableau où vous souhaitez insérer la nouvelle valeur.
Ajouter une valeur au début du tableau
Supposons que nous ayons la collection suivante :
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Chapeau" , "tailles" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Casquette", "tailles" :[ "M", "L" ] }Et supposons que nous voulions ajouter une valeur au début du tableau dans le document 3.
Nous pouvons faire ceci :
db.products.update( { _id: 3 }, { $push: { sizes: { $each: [ "S" ], $position: 0 } } } )
Maintenant, vérifions à nouveau la collection :
db.products.find()
Résultat :
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Chapeau" , "tailles" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Casquette", "tailles" :[ "S", "M", "L" ] }Les tableaux sont basés sur zéro, donc
position: 0
ajoute la valeur comme premier élément du tableau.Ajouter une valeur au milieu du tableau
Supposons que nous voulions ajouter la valeur
M
au document 2, et nous voulons qu'il aille entreS
etL
.Voici comment procéder :
db.products.update( { _id: 2 }, { $push: { sizes: { $each: [ "M" ], $position: 1 } } } )
Maintenant, vérifions à nouveau la collection :
db.products.find()
Résultat :
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Chapeau" , "tailles" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Casquette", "tailles" :[ "S", "M" , "L" ] }Nous avons utilisé
$position: 1
, car c'est la position que nous voulionsM
aller (c'est-à-dire la deuxième position).Valeurs négatives
Vous pouvez également fournir une valeur négative comme position. Lorsque vous faites cela, la valeur est insérée à la position négative spécifiée en comptant à partir de la fin.
Supposons que nous voulions insérer
L
entreM
etXL
dans le document 1.Voici comment nous procéderions en utilisant une position négative :
db.products.update( { _id: 1 }, { $push: { sizes: { $each: [ "L" ], $position: -1 } } } )
Vérifiez le résultat :
db.products.find()
Résultat :
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "prod" :"Chapeau", "tailles" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Casquette", "tailles" :[ "S" , "M", "L" ] }Avec une position d'index négative, si vous spécifiez plusieurs éléments dans le
$each
tableau, le dernier élément ajouté est à la position spécifiée à partir de la fin.