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 .