Elemente aus einem Array entfernen
So wie Sie Elemente hinzufügen können, müssen Sie sie auch entfernen können. MongoDB bietet hierfür mehrere Operatoren. In diesem Schritt lernen Sie, wie Sie mit $pull Elemente nach Wert und mit $pop Elemente nach Position entfernen.
Um ein bestimmtes Element anhand seines Werts aus einem Array zu entfernen, verwenden Sie den $pull-Operator. Entfernen wir "Physics" aus Alices Kursliste.
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pull: { courses: "Physics" } }
)
Dieser Befehl findet das Dokument für Alice und entfernt alle Vorkommen von "Physics" aus ihrem courses-Array. Überprüfen Sie das Ergebnis:
db.students.find({ name: "Alice Johnson" }).pretty()
Die Ausgabe zeigt, dass "Physics" nicht mehr im Array enthalten ist.
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science', 'Data Science' ]
}
]
Um mehrere Elemente zu entfernen, die mit Werten in einer Liste übereinstimmen, können Sie den $pullAll-Operator verwenden. Entfernen wir sowohl "Chess Club" als auch "Debate Team" aus Bobs Aktivitäten.
db.students.updateOne(
{ name: "Bob Smith" },
{ $pullAll: { activities: ["Chess Club", "Debate Team"] } }
)
Überprüfen Sie das Update für Bobs Dokument:
db.students.find({ name: "Bob Smith" }).pretty()
Die Ausgabe bestätigt die Entfernung der angegebenen Aktivitäten.
[
{
_id: ObjectId("..."),
name: 'Bob Smith',
grades: [ 95, 87, 92 ],
activities: [ 'Robotics Club', 'Swimming Team' ]
}
]
Wenn Sie ein Element vom Anfang oder Ende eines Arrays entfernen müssen, können Sie den $pop-Operator verwenden. Verwenden Sie 1, um das letzte Element zu entfernen, und -1, um das erste zu entfernen. Entfernen wir den letzten Kurs aus Alices Liste.
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pop: { courses: 1 } }
)
Sehen wir uns den Endzustand von Alices Kursen an:
db.students.find({ name: "Alice Johnson" }).pretty()
Die Ausgabe zeigt, dass das letzte Element, "Data Science", entfernt wurde.
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science' ]
}
]