Si vous avez une collection de documents dans MongoDB contenant des tableaux, vous pouvez ajouter de nouvelles valeurs à ces tableaux si nécessaire.
Selon vos besoins spécifiques, vous pouvez utiliser le $push
l'opérateur ou le $addToSet
opérateur.
Le $push
Opérateur
Supposons que nous ayons une collection appelée products
avec les documents suivants :
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Chapeau" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "M", "L" ] }Et disons que nous voulons ajouter une valeur au tableau dans le document 3.
Nous pouvons utiliser
$push
en conjonction avecupdate()
pour ajouter la valeur :db.products.update( { _id: 3 }, { $push: { sizes: "XL" } } )
Examinons à nouveau la collection pour vérifier le changement :
db.products.find()
Résultat :
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Chapeau" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "M", "L", "XL" ] }Nous pouvons voir que la valeur
XL
a été ajouté au tableau dans le document 3.Le
$push
L'opérateur peut également être utilisé avec divers modificateurs, tels que$position
,$sort
, et$slice
.Vous pouvez également ajouter plusieurs valeurs au tableau en utilisant le
$each
modificateur.Voir MongoDB
$push
pour des exemples.Le
$addToSet
OpérateurLe
$addToSet
L'opérateur fonctionne de la même manière que$push
, à quelques exceptions près :
- Si la valeur que vous essayez d'ajouter existe déjà dans le tableau, elle ne sera pas ajoutée.
- La
$position
,$sort
, et$slice
les modificateurs ne peuvent pas être utilisés avec$addToSet
.
Supposons que notre collection ressemble à ceci :
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Chapeau", "tailles" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Casquette", "tailles" :[ "S", "M" , "L", "XL" ] }
Insérons plusieurs valeurs dans le tableau du document 2 :
db.products.update(
{ _id: 2 },
{
$addToSet: {
sizes: {
$each: [ "XXL", "XXXL" ]
}
}
}
)
Maintenant, vérifions à nouveau la collection :
db.products.find()
Résultat :
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Chapeau", "tailles" :[ "S", "L", "XL", "XXL", "XXXL" ] }{ "_id" :3, "product" :"Casquette", "tailles" :[ "S", "M", "L", "XL" ] }
Nous pouvons voir que les deux valeurs ont été ajoutées au tableau dans le document 2 comme prévu.
Cet exemple utilise le $each
modificateur, que vous pouvez également utiliser avec le $push
opérateur.
Je n'ai utilisé que le $each
modificateur parce que j'ajoutais plusieurs valeurs. Si je n'utilisais qu'une seule valeur, j'aurais pu omettre le $each
modificateur, et la syntaxe aurait ressemblé plus à celle ci-dessus $push
exemple.
Comme mentionné, si la valeur existe déjà, elle ne sera pas ajoutée. De plus, avec les deux opérateurs, si vous ajoutez un tableau, le tableau entier sera ajouté en tant que valeur distincte dans le tableau existant.
Voir MongoDB $addToSet
pour plus d'exemples.