Eliminar Elementos de un Array
Así como puedes añadir elementos, también necesitas poder eliminarlos. MongoDB proporciona varios operadores para este propósito. En este paso, aprenderás a usar $pull para eliminar elementos por valor y $pop para eliminarlos por posición.
Para eliminar un elemento específico de un array basándote en su valor, usa el operador $pull. Eliminemos "Physics" de la lista de cursos de Alice.
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pull: { courses: "Physics" } }
)
Este comando busca el documento de Alice y elimina todas las ocurrencias de "Physics" de su array courses. Comprueba el resultado:
db.students.find({ name: "Alice Johnson" }).pretty()
La salida muestra que "Physics" ya no está en el array.
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science', 'Data Science' ]
}
]
Para eliminar múltiples elementos que coinciden con valores en una lista, puedes usar el operador $pullAll. Eliminemos tanto "Chess Club" como "Debate Team" de las actividades de Bob.
db.students.updateOne(
{ name: "Bob Smith" },
{ $pullAll: { activities: ["Chess Club", "Debate Team"] } }
)
Verifica la actualización del documento de Bob:
db.students.find({ name: "Bob Smith" }).pretty()
La salida confirma la eliminación de las actividades especificadas.
[
{
_id: ObjectId("..."),
name: 'Bob Smith',
grades: [ 95, 87, 92 ],
activities: [ 'Robotics Club', 'Swimming Team' ]
}
]
Si necesitas eliminar un elemento del principio o del final de un array, puedes usar el operador $pop. Usa 1 para eliminar el último elemento y -1 para eliminar el primero. Eliminemos el último curso de la lista de Alice.
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pop: { courses: 1 } }
)
Veamos el estado final de los cursos de Alice:
db.students.find({ name: "Alice Johnson" }).pretty()
La salida muestra que el último elemento, "Data Science", ha sido eliminado.
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science' ]
}
]