MongoDB-Arrays aktualisieren

MongoDBMongoDBBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernst du, wie du MongoDB-Arrays mit verschiedenen Techniken aktualisierst, darunter das Hinzufügen neuer Elemente, das Entfernen von Array-Elementen, das Aktualisieren von Array-Elementen, das Hinzufügen zu Array-Sätzen und das Entfernen von Duplikaten. Das Lab umfasst praktische Beispiele und Schritt-für-Schritt-Anleitungen, um dir zu helfen, die Verwaltung von Arrays in deinen MongoDB-Datenbanken zu meistern. Du wirst erkunden, wie du dynamisch Dokumentendaten ändern und die Integrität deiner arraybasierten Strukturen aufrechterhalten kannst.

Das Lab beginnt mit der Demonstration, wie du mit dem $push-Operator neue Elemente zu Arrays hinzufügst. Anschließend behandelt es den $pull-Operator, mit dem du bestimmte Elemente aus Arrays entfernen kannst. Darüber hinaus wirst du lernen, wie du einzelne Array-Elemente aktualisierst, Elemente zu Array-Sätzen hinzufügst und Duplikate aus Arrays entfernst. Diese Techniken werden dir die erforderlichen Fähigkeiten verleihen, um effektiv mit Arrays und eingebetteten Dokumenten in deinen MongoDB-Anwendungen umzugehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/AggregationOperationsGroup(["Aggregation Operations"]) mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/DataTypesGroup(["Data Types"]) mongodb(("MongoDB")) -.-> mongodb/ArrayandEmbeddedDocumentsGroup(["Array and Embedded Documents"]) mongodb/BasicOperationsGroup -.-> mongodb/update_document("Update Document") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/DataTypesGroup -.-> mongodb/work_with_array_data_types("Work with Array Data Types") mongodb/DataTypesGroup -.-> mongodb/manage_array_elements("Manage Array Elements") mongodb/ArrayandEmbeddedDocumentsGroup -.-> mongodb/query_embedded_documents("Query Embedded Documents") mongodb/AggregationOperationsGroup -.-> mongodb/aggregate_group_totals("Aggregate Group Totals") subgraph Lab Skills mongodb/update_document -.-> lab-422095{{"MongoDB-Arrays aktualisieren"}} mongodb/find_documents -.-> lab-422095{{"MongoDB-Arrays aktualisieren"}} mongodb/work_with_array_data_types -.-> lab-422095{{"MongoDB-Arrays aktualisieren"}} mongodb/manage_array_elements -.-> lab-422095{{"MongoDB-Arrays aktualisieren"}} mongodb/query_embedded_documents -.-> lab-422095{{"MongoDB-Arrays aktualisieren"}} mongodb/aggregate_group_totals -.-> lab-422095{{"MongoDB-Arrays aktualisieren"}} end

Neuen Elementen hinzufügen

In diesem Schritt lernst du, wie du mit dem $push-Operator in MongoDB neue Elemente zu Arrays hinzufügst. Arrays in MongoDB sind leistungsfähig und flexibel, was es dir ermöglicht, die Daten deines Dokuments dynamisch zu verändern.

Beginnen wir zunächst mit dem Start der MongoDB-Shell und erstellen eine Datenbank für unser Lab:

mongosh
use arraylab

Erstellen wir nun eine Sammlung namens students mit einem initialen Dokument, das ein Array von Kursen enthält:

db.students.insertOne({
    name: "Alice Johnson",
    courses: ["Mathematik", "Informatik"]
})

Um einen neuen Kurs zur Liste der Kurse von Alice hinzuzufügen, verwenden wir den $push-Operator:

db.students.updateOne(
    { name: "Alice Johnson" },
    { $push: { courses: "Datenstrukturen" } }
)

Verifizieren wir die Aktualisierung, indem wir Alice's Dokument suchen:

db.students.find({ name: "Alice Johnson" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    courses: [ 'Mathematik', 'Informatik', 'Datenstrukturen' ]
  }
]

Der $push-Operator ermöglicht es dir, Elemente zu einem Array hinzuzufügen. In diesem Beispiel haben wir "Datenstrukturen" zur Liste der Kurse von Alice hinzugefügt.

Du kannst auch mehrere Elemente gleichzeitig hinzufügen, indem du $push mit dem Modifikator $each verwendest:

db.students.updateOne(
    { name: "Alice Johnson" },
    { $push: { courses: { $each: ["Physik", "Chemie"] } } }
)

Dadurch werden sowohl "Physik" als auch "Chemie" zur Kurs-Array von Alice hinzugefügt.

Array-Elemente entfernen

In diesem Schritt lernst du, wie du mit dem $pull-Operator in MongoDB Elemente aus Arrays entfernst. Auf Grundlage des vorherigen Schritts arbeiten wir weiter mit unserer students-Sammlung in der arraylab-Datenbank.

Stelle zunächst sicher, dass du in der MongoDB-Shell bist und die richtige Datenbank verwendest:

mongosh
use arraylab

Verifizieren wir unser vorhandenes Studentendokument:

db.students.find({ name: "Alice Johnson" })

Um ein bestimmtes Element aus einem Array zu entfernen, verwenden wir den $pull-Operator. Entfernen wir den Kurs "Physik" von den Kursen von Alice:

db.students.updateOne(
    { name: "Alice Johnson" },
    { $pull: { courses: "Physik" } }
)

Überprüfen wir nun das aktualisierte Dokument:

db.students.find({ name: "Alice Johnson" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    courses: [ 'Mathematik', 'Informatik', 'Datenstrukturen', 'Chemie' ]
  }
]

Du kannst auch mehrere bestimmte Elemente entfernen, indem du $pull mit einem Array von Werten verwendest:

db.students.updateOne(
    { name: "Alice Johnson" },
    { $pullAll: { courses: ["Mathematik", "Chemie"] } }
)

Der $pullAll-Operator entfernt alle angegebenen Werte aus dem Array in einer einzelnen Operation.

Überprüfen wir den Endzustand der Kurse von Alice:

db.students.find({ name: "Alice Johnson" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    courses: [ 'Informatik', 'Datenstrukturen' ]
  }
]

Array-Elemente aktualisieren

In diesem Schritt lernst du, wie du mit Hilfe von Positions- und Array-Filteroperatoren spezifische Elemente innerhalb eines Arrays in MongoDB aktualisierst.

Stelle zunächst sicher, dass du in der MongoDB-Shell bist und die richtige Datenbank verwendest:

mongosh
use arraylab

Erstellen wir ein komplexeres Dokument mit einem Array von Studentenkursen:

db.students.insertOne({
    name: "Bob Smith",
    courses: [
        { name: "Mathematik", note: "B" },
        { name: "Informatik", note: "A" },
        { name: "Physik", note: "C" }
    ]
})

Um ein bestimmtes Element in einem Array zu aktualisieren, verwenden wir den Positionsoperator $. Aktualisieren wir die Note für Informatik:

db.students.updateOne(
    { name: "Bob Smith", "courses.name": "Informatik" },
    { $set: { "courses.$.note": "A+" } }
)

Verifizieren wir die Aktualisierung:

db.students.find({ name: "Bob Smith" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Bob Smith',
    courses: [
      { name: 'Mathematik', note: 'B' },
      { name: 'Informatik', note: 'A+' },
      { name: 'Physik', note: 'C' }
    ]
  }
]

Wir können auch den Operator $[] verwenden, um alle Elemente in einem Array zu aktualisieren. Fügen wir allen Kursen einen Semester hinzu:

db.students.updateOne(
    { name: "Bob Smith" },
    { $set: { "courses.$[].semester": "Herbst 2023" } }
)

Überprüfen wir das endgültige Dokument:

db.students.find({ name: "Bob Smith" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Bob Smith',
    courses: [
      { name: 'Mathematik', note: 'B', semester: 'Herbst 2023' },
      { name: 'Informatik', note: 'A+', semester: 'Herbst 2023' },
      { name: 'Physik', note: 'C', semester: 'Herbst 2023' }
    ]
  }
]

Elemente zu Array-Sätzen hinzufügen

In diesem Schritt lernst du, wie du mit dem $addToSet-Operator in MongoDB einzigartige Elemente zu einem Array hinzufügst, was die Hinzufügung von Duplikaten verhindert.

Stelle zunächst sicher, dass du in der MongoDB-Shell bist und die richtige Datenbank verwendest:

mongosh
use arraylab

Erstellen wir ein neues Dokument mit einem Array der Fähigkeiten eines Studenten:

db.students.insertOne({
    name: "Emma Wilson",
    skills: ["Python", "JavaScript"]
})

Der $addToSet-Operator fügt ein Element nur dann zu einem Array hinzu, wenn es noch nicht vorhanden ist:

db.students.updateOne(
    { name: "Emma Wilson" },
    { $addToSet: { skills: "Python" } }
)

Überprüfen wir das Dokument:

db.students.find({ name: "Emma Wilson" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Emma Wilson',
    skills: ['Python', 'JavaScript']
  }
]

Beachte, dass "Python" nicht erneut hinzugefügt wurde, da es bereits vorhanden war.

Du kannst auch mehrere einzigartige Elemente gleichzeitig hinzufügen, indem du $addToSet mit $each verwendest:

db.students.updateOne(
    { name: "Emma Wilson" },
    { $addToSet: {
        skills: {
            $each: ["React", "Node.js", "Python", "TypeScript"]
        }
    } }
)

Überprüfen wir das endgültige Dokument:

db.students.find({ name: "Emma Wilson" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Emma Wilson',
    skills: ['Python', 'JavaScript', 'React', 'Node.js', 'TypeScript']
  }
]

Beachte, wie "Python" nicht dupliziert wurde, während die neuen Fähigkeiten hinzugefügt wurden.

Duplikate entfernen

In diesem Schritt lernst du, wie du mit Hilfe von Aggregation und Update-Operationen in MongoDB duplizierte Elemente aus einem Array entfernst.

Stelle zunächst sicher, dass du in der MongoDB-Shell bist und die richtige Datenbank verwendest:

mongosh
use arraylab

Erstellen wir ein Dokument mit duplizierten Fähigkeiten:

db.students.insertOne({
    name: "Michael Chen",
    skills: ["Python", "JavaScript", "Python", "React", "JavaScript", "Node.js"]
})

Um Duplikate zu entfernen, verwenden wir den $addToSet-Operator, der automatisch Duplikate eliminiert:

db.students.updateOne(
    { name: "Michael Chen" },
    { $set: { skills: { $setUnique: "$skills" } } }
)

Alternativ können wir auch einen Aggregationspipeline verwenden, um Duplikate zu entfernen:

db.students.aggregate([
    { $match: { name: "Michael Chen" } },
    { $project: {
        name: 1,
        skills: { $setUnique: "$skills" }
    } },
    { $merge: { into: "students", on: "name", whenMatched: "replace" } }
])

Überprüfen wir das Dokument:

db.students.find({ name: "Michael Chen" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Michael Chen',
    skills: ['Python', 'JavaScript', 'React', 'Node.js']
  }
]

Wir können auch zeigen, wie Duplikate entfernt werden, während die ursprüngliche Reihenfolge der ersten Vorkommen beibehalten wird:

db.students.updateOne(
    { name: "Michael Chen" },
    { $set: {
        skills: Array.from(new Set(db.students.findOne({ name: "Michael Chen" }).skills))
    } }
)

Machen wir einen letzten Check:

db.students.find({ name: "Michael Chen" })

Zusammenfassung

In diesem Lab hast du gelernt, wie du MongoDB-Arrays mit verschiedenen Operatoren aktualisierst. Zunächst hast du gelernt, wie du mit dem $push-Operator neue Elemente zu Arrays hinzufügst, einschließlich des Hinzufügens mehrerer Elemente gleichzeitig. Anschließend hast du untersucht, wie du mit dem $pull-Operator spezifische Elemente aus Arrays entfernst. Darüber hinaus hast du entdeckt, wie du einzelne Elemente innerhalb eines Arrays aktualisierst und wie du Elemente zu einem Array-Set hinzufügst, um Duplikate zu vermeiden. Diese Techniken bieten eine solide Grundlage für die dynamische Verwaltung von Array-Daten in deinen MongoDB-Anwendungen.