MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

2 façons d'ajouter une valeur à un tableau dans MongoDB

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 avec update() 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érateur

Le $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.