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

Insérer une valeur à une position spécifique dans un tableau dans MongoDB

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 entre S et L .

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 voulions M 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 entre M et XL 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.