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

MongoDB $ pop

Dans MongoDB, vous pouvez utiliser le $pop opérateur pour supprimer le premier ou le dernier élément d'un tableau.

Utilisez $pop en conjonction avec une méthode telle que update() pour mettre à jour le document spécifié avec la modification.

Utilisez -1 pour supprimer le premier élément, et 1 pour supprimer le dernier.

Exemple

Supposons que nous ayons une collection appelée products avec les documents suivants :

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Supprimer le premier élément

Nous pouvons supprimer le premier élément du tableau dans le document 1 comme ceci :

db.products.update( 
  { _id: 1 }, 
  { $pop: { sizes: -1 } } 
)

Sortie :

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Ce message nous indique qu'un document correspond et qu'un autre (c'est-à-dire le même document) a été modifié.

Jetons un coup d'œil à la collection maintenant :

db.products.find()

Résultat :

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Nous pouvons voir que le premier élément du tableau du document 1 a été supprimé.

Supprimer le dernier élément

Supprimons maintenant le dernier élément du tableau dans le document 2 :

db.products.update( 
  { _id: 2 }, 
  { $pop: { sizes: 1 } } 
)

Sortie :

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Maintenant, vérifions à nouveau la collection :

db.products.find()

Résultat :

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Nous pouvons voir que le dernier élément a été supprimé du tableau dans le document 2.

Mettre à jour tous les documents

Voici un exemple qui utilise le updateMany() méthode pour mettre à jour tous les documents :

db.products.updateMany( 
  { }, 
  { $pop: { sizes: 1 } } 
)

Sortie :

{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }

Et revérifiez la collection :

db.products.find()

Résultat :

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }

Alternativement, vous pouvez utiliser le update() méthode pour mettre à jour plusieurs documents en spécifiant multi: true .