Supprimer des éléments d'un tableau
Tout comme vous pouvez ajouter des éléments, vous devez également pouvoir les supprimer. MongoDB fournit plusieurs opérateurs à cet effet. Dans cette étape, vous apprendrez à utiliser $pull pour supprimer des éléments par valeur et $pop pour les supprimer par position.
Pour supprimer un élément spécifique d'un tableau en fonction de sa valeur, utilisez l'opérateur $pull. Supprimons "Physics" de la liste des cours d'Alice.
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pull: { courses: "Physics" } }
)
Cette commande trouve le document d'Alice et supprime toutes les occurrences de "Physics" de son tableau courses. Vérifiez le résultat :
db.students.find({ name: "Alice Johnson" }).pretty()
La sortie montre que "Physics" n'est plus dans le tableau.
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science', 'Data Science' ]
}
]
Pour supprimer plusieurs éléments qui correspondent à des valeurs dans une liste, vous pouvez utiliser l'opérateur $pullAll. Supprimons "Chess Club" et "Debate Team" des activités de Bob.
db.students.updateOne(
{ name: "Bob Smith" },
{ $pullAll: { activities: ["Chess Club", "Debate Team"] } }
)
Vérifiez la mise à jour du document de Bob :
db.students.find({ name: "Bob Smith" }).pretty()
La sortie confirme la suppression des activités spécifiées.
[
{
_id: ObjectId("..."),
name: 'Bob Smith',
grades: [ 95, 87, 92 ],
activities: [ 'Robotics Club', 'Swimming Team' ]
}
]
Si vous devez supprimer un élément du début ou de la fin d'un tableau, vous pouvez utiliser l'opérateur $pop. Utilisez 1 pour supprimer le dernier élément et -1 pour supprimer le premier. Supprimons le dernier cours de la liste d'Alice.
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pop: { courses: 1 } }
)
Voyons l'état final des cours d'Alice :
db.students.find({ name: "Alice Johnson" }).pretty()
La sortie montre que le dernier élément, "Data Science", a été supprimé.
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science' ]
}
]