MongoDB-Arrays verwalten

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 behandelst. Diese sind leistungsstarke Datenstrukturen, die Listen von Elementen wie Strings, Zahlen oder sogar geschachtelte Dokumente enthalten können. Du wirst verschiedene Operationen erkunden, darunter das Erstellen von Array-Feldern, Hinzufügen von Array-Elementen, Entfernen von Array-Elementen, Aktualisieren von Array-Werten und Abfragen von Array-Inhalten. Diese Fähigkeiten werden es dir ermöglichen, Daten, die in MongoDB-Arrays gespeichert sind, effektiv zu verwalten und zu manipulieren.

Das Lab umfasst die folgenden Schritte: Erstellen von Array-Feldern, Hinzufügen von Array-Elementen, Entfernen von Array-Elementen, Aktualisieren von Array-Werten und Abfragen von Array-Inhalten. Am Ende dieses Labs wirst du eine solide Vorstellung davon haben, wie du mit MongoDB-Arrays umgehen kannst und wie du deren Funktionen nutzen kannst, um deine Fähigkeiten im Umgang mit Daten und Abfragen zu verbessern.

Arrayfelder erstellen

In diesem Schritt lernst du, wie du in MongoDB Arrayfelder erstellst. Dadurch kannst du mehrere Werte in einem einzelnen Dokument speichern. Arrays sind leistungsstarke Datenstrukturen, die Listen von Elementen wie Strings, Zahlen oder sogar geschachtelte Dokumente enthalten können.

Zunächst starten wir die MongoDB-Shell:

mongosh

Jetzt erstellen wir eine Datenbank für unser Lab:

use arraylab

Wir erstellen eine Sammlung namens students und fügen ein Dokument mit einem Arrayfeld ein:

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

Zergliedern wir dieses Beispiel:

  • Wir erstellen ein Studentendokument mit einem courses-Feld
  • Das courses-Feld ist ein Array, das drei String-Elemente enthält
  • Jeder Student kann mehrere Kurse in einem einzelnen Feld speichern

Um das Dokument zu überprüfen, holen wir es ab:

db.students.find()

Beispielausgabe:

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

Du kannst auch Arrays mit gemischten Datentypen erstellen:

db.students.insertOne({
    name: "Bob Smith",
    grades: [95, 87, 92],
    activities: ["Schachklub", "Debattierteam"]
})

Arrayelemente hinzufügen

In diesem Schritt lernst du, wie du mit verschiedenen Methoden Elemente zu bestehenden Arrays in MongoDB hinzufügen kannst. Wir werden mit der arraylab-Datenbank und der students-Sammlung aus dem vorherigen Schritt fortfahren.

Stellen Sie zunächst sicher, dass Sie in der MongoDB-Shell sind:

mongosh

Wechseln Sie zur arraylab-Datenbank:

use arraylab

Um einem Array ein einzelnes Element hinzuzufügen, verwenden Sie den $push-Operator:

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

Überprüfen wir die Aktualisierung:

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

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    age: 22,
    courses: [ 'Mathematik', 'Informatik', 'Physik', 'Data Science' ]
  }
]

Um mehrere Elemente auf einmal hinzuzufügen, verwenden Sie $push mit $each:

db.students.updateOne(
    { name: "Bob Smith" },
    { $push: { activities: { $each: ["Roboterklub", "Schwimmteam"] } } }
)

Überprüfen Sie die Aktualisierung:

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

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Bob Smith',
    grades: [ 95, 87, 92 ],
    activities: [ 'Schachklub', 'Debattierteam', 'Roboterklub', 'Schwimmteam' ]
  }
]

Arrayelemente entfernen

In diesem Schritt lernst du, wie du mit verschiedenen Techniken bestimmte Elemente aus Arrays in MongoDB entfernen kannst. Wir werden mit der arraylab-Datenbank und der students-Sammlung fortfahren.

Stellen Sie zunächst sicher, dass Sie in der MongoDB-Shell sind:

mongosh

Wechseln Sie zur arraylab-Datenbank:

use arraylab

Um ein bestimmtes Element aus einem Array zu entfernen, verwenden Sie den $pull-Operator:

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

Überprüfen wir die Aktualisierung:

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

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    age: 22,
    courses: [ 'Mathematik', 'Informatik', 'Data Science' ]
  }
]

Um mehrere bestimmte Elemente zu entfernen, verwenden Sie $pullAll:

db.students.updateOne(
    { name: "Bob Smith" },
    { $pullAll: { activities: ["Schachklub", "Debattierteam"] } }
)

Überprüfen Sie die Aktualisierung:

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

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Bob Smith',
    grades: [ 95, 87, 92 ],
    activities: [ 'Roboterklub', 'Schwimmteam' ]
  }
]

Wenn Sie ein Element anhand seiner Position entfernen möchten, können Sie den $pop-Operator verwenden:

db.students.updateOne(
    { name: "Alice Johnson" },
    { $pop: { courses: 1 } }  // Entfernt das letzte Element
)

Überprüfen Sie die endgültige Aktualisierung:

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

Beispielausgabe:

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

Arraywerte aktualisieren

In diesem Schritt lernst du, wie du mit verschiedenen Techniken bestimmte Elemente innerhalb von Arrays in MongoDB aktualisierst. Wir werden mit der arraylab-Datenbank und der students-Sammlung fortfahren.

Stellen Sie zunächst sicher, dass Sie in der MongoDB-Shell sind:

mongosh

Wechseln Sie zur arraylab-Datenbank:

use arraylab

Um ein bestimmtes Arrayelement anhand seines Indexes zu aktualisieren, verwenden Sie den positionellen $-Operator:

db.students.updateOne(
    { name: "Alice Johnson", "courses": "Mathematik" },
    { $set: { "courses.$": "Fortgeschrittene Mathematik" } }
)

Überprüfen wir die Aktualisierung:

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

Beispielausgabe:

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

Um mehrere Arrayelemente zu aktualisieren, verwenden Sie $[] (alle Elemente) oder $[<identifier>] (filtern Sie Elemente):

db.students.updateOne(
    { name: "Bob Smith" },
    { $mul: { "grades.$[]": 1.1 } }  // Erhöhen Sie alle Noten um 10%
)

Überprüfen Sie die Aktualisierung:

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

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Bob Smith',
    grades: [ 104,5, 95,7, 101,2 ],
    activities: [ 'Roboterklub', 'Schwimmteam' ]
  }
]

Sie können auch $addToSet verwenden, um einzigartige Elemente zu einem Array hinzuzufügen:

db.students.updateOne(
    { name: "Alice Johnson" },
    { $addToSet: { courses: "Data Science" } }
)

Überprüfen Sie die endgültige Aktualisierung:

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

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    age: 22,
    courses: [ 'Fortgeschrittene Mathematik', 'Informatik', 'Data Science' ]
  }
]

Arrayinhalt abfragen

In diesem Schritt lernst du, wie du in MongoDB Dokumente abfragst und basierend auf dem Arrayinhalt filterst. Wir werden mit der arraylab-Datenbank und der students-Sammlung fortfahren.

Stellen Sie zunächst sicher, dass Sie in der MongoDB-Shell sind:

mongosh

Wechseln Sie zur arraylab-Datenbank:

use arraylab

Um Dokumente zu finden, in denen ein Array ein bestimmtes Element enthält, verwenden Sie die direkte Übereinstimmung:

db.students.find({ courses: "Data Science" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    age: 22,
    courses: [ 'Fortgeschrittene Mathematik', 'Informatik', 'Data Science' ]
  }
]

Um Dokumente mit einem Array abzufragen, das mehrere bestimmte Elemente enthält, verwenden Sie den $all-Operator:

db.students.find({
    courses: { $all: ["Fortgeschrittene Mathematik", "Informatik"] }
})

Um Dokumente zu finden, in denen ein Arrayelement einer Bedingung entspricht, verwenden Sie den $elemMatch-Operator:

db.students.find({
    grades: { $elemMatch: { $gt: 100 } }
})

Diese Abfrage findet Dokumente, in denen mindestens eine Note größer als 100 ist.

Um die Anzahl der Elemente in einem Array zu zählen, verwenden Sie den $size-Operator:

db.students.find({
    activities: { $size: 2 }
})

Diese Abfrage findet Dokumente mit genau 2 Aktivitäten.

Fügen wir noch ein weiteres Dokument hinzu, um komplexere Abfragen zu demonstrieren:

db.students.insertOne({
    name: "Charlie Brown",
    courses: ["Kunst", "Musik", "Literatur"],
    grades: [88, 92, 85],
    activities: ["Malerklub"]
})

Jetzt führen wir eine komplexere Abfrage durch, die mehrere Bedingungen kombiniert:

db.students.find({
    $and: [
        { courses: { $in: ["Kunst", "Musik"] } },
        { grades: { $elemMatch: { $gte: 90 } } }
    ]
})

Diese Abfrage findet Studenten, die entweder "Kunst" oder "Musik" in ihren Kursen haben UND mindestens eine Note von 90 oder höher haben.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie in MongoDB Arrayfelder erstellen, Elemente zu bestehenden Arrays hinzufügen, Arrayelemente entfernen, Arraywerte aktualisieren und den Arrayinhalt abfragen. Sie haben begonnen, indem Sie eine Datenbank und eine Sammlung namens students erstellt haben und dann Dokumente mit Arrayfeldern wie courses und grades eingefügt haben. Anschließend haben Sie verschiedene Methoden zur Manipulation der Arrays untersucht, wie z. B. den $push-Operator, um neue Elemente hinzuzufügen, den $pull-Operator, um Elemente zu entfernen, und den $set-Operator, um Arraywerte zu aktualisieren. Schließlich haben Sie gelernt, wie Sie den Arrayinhalt mit den $in- und $all-Operatoren abfragen. Das Lab hat einen umfassenden Überblick über das Arbeiten mit Arrays in MongoDB gegeben und Ihnen die erforderlichen Kenntnisse vermittelt, um diese leistungsstarke Datenstruktur effizient in Ihren MongoDB-Anwendungen zu verwalten und zu nutzen.