Zum Inhalt

Erste DB mit Collection Schülerprofile

Aufgabe 1: Eigenes JSON-Dokument erstellen

Hier ist das JSON-Dokument für mein eigenes Profil, validiert und strukturiert für die Collection profiles.

{
  "name": "Joel Mazurek",
  "klasse": "2FI",
  "jahrgang": 2007,
  "interessen": ["Lesen", "Gym gehen", "Wandern"],
  "lieblingsApps": [
   { "name": "YouTube", "typ": "Social" },
   { "name": "Instagram", "typ": "Social" },
   { "name": "Bitget", "typ": "Crypto" }
  ],
  "hatLaptop": true,
  "stundenProWocheOnline": 20
}

Aufgabe 2: Datenbank und Collection anlegen (insertOne)

Befehle, um die Datenbank schuelerHub zu erstellen (bzw. zu verwenden) und das eigene Profil einzufügen.

// 1. Datenbank auswählen (wird erstellt, sobald Daten eingefügt werden)
use schuelerHub

// 2. Mein Profil einfügen
db.profiles.insertOne({
  name: "Joel Mazurek",
  klasse: "2FI",
  jahrgang: 2007,
  interessen: ["Lesen", "Gym gehen", "Wandern"],
  lieblingsApps: [
   { name: "YouTube", typ: "Social" },
   { name: "Instagram", typ: "Social" },
   { name: "Bitget", typ: "Crypto" }
  ],
  hatLaptop: true,
  stundenProWocheOnline: 20
})

Aufgabe 3: Mitschüler einfügen (insertMany)

Einfügen von 4 weiteren Schüler-Profilen mit insertMany.

db.profiles.insertMany([
  {
    name: "Nazar Tobilevych",
    klasse: "2FI",
    jahrgang: 2008,
    interessen: ["Gym", "Bücher lesen", "Wandern"],
    lieblingsApps: [
      { name: "Instagram", typ: "Social" },
      { name: "Clash Royale", typ: "Game" },
      { name: "Telegram", typ: "Social" }
    ],
    hatLaptop: true,
    stundenProWocheOnline: 40
  },
  {
    name: "Lars Hellstern",
    klasse: "2FI",
    jahrgang: 2007,
    interessen: ["Autos", "Crypto", "Gambling"],
    lieblingsApps: [
      { name: "Gemini", typ: "KI" },
      { name: "Snapchat", typ: "Social" },
      { name: "Bitget", typ: "Crypto" }
    ],
    hatLaptop: true,
    stundenProWocheOnline: 20
  },
  {
    name: "Florin Gerig",
    klasse: "2FI",
    jahrgang: 2008,
    interessen: ["Bouldern", "Cello", "Programmieren"],
    lieblingsApps: [
      { name: "Instagram", typ: "Social" },
      { name: "Minecraft", typ: "Game" }
    ],
    hatLaptop: true,
    stundenProWocheOnline: 35
  },
  {
    name: "Julian Graf",
    klasse: "2FI",
    jahrgang: 2008,
    interessen: ["NoSQL-Datenbanken", "Gym", "C#"],
    lieblingsApps: [
      { name: "TikTok", typ: "Social" },
      { name: "Gemini", typ: "KI" },
      { name: "Snapchat", typ: "Social" },
      { name: "Spotify", typ: "Musik" }
    ],
    hatLaptop: true,
    stundenProWocheOnline: 30
  }
])

Aufgabe 4: Leseabfragen (Find, Filter, Projection)

Hier sind einige Beispiele für Abfragen auf der profiles Collection.

1. Alle Schüler finden

db.profiles.find()

2. Schüler finden, die gerne ins Gym gehen (Filter)

db.profiles.find({ interessen: "Gym" })

3. Nur Namen und Jahrgang anzeigen (Projection) Die _id wird standardmäßig angezeigt, mit _id: 0 blenden wir sie aus.

db.profiles.find({}, { name: 1, jahrgang: 1, _id: 0 })

4. Schüler finden, die mehr als 30 Stunden online sind UND einen Laptop haben

db.profiles.find({
  stundenProWocheOnline: { $gt: 30 },
  hatLaptop: true
})

Aufgabe 5: Daten ändern (Update, Delete)

1. Update: Einem Schüler ein neues Interesse hinzufügen Wir fügen "Reisen" zu den Interessen von "Nazar Tobilevych" hinzu.

db.profiles.updateOne(
  { name: "Nazar Tobilevych" },
  { $push: { interessen: "Reisen" } }
)

2. Update: Die Online-Stunden eines Schülers ändern Wir setzen die Stunden von "Lars Hellstern" auf 25.

db.profiles.updateOne(
  { name: "Lars Hellstern" },
  { $set: { stundenProWocheOnline: 25 } }
)

3. Delete: Einen Schüler löschen Wir löschen den Datensatz von "Florin Gerig".

db.profiles.deleteOne({ name: "Florin Gerig" })