Aufgabe 10 - MongoDB
Aufgabe 10 - MongoDB
Abschnitt betitelt „Aufgabe 10 - MongoDB“MongoDB soll ausprobiert und damit die Grundkonzepte einer NoSQL-Datenbank kennengelernt werden. Die Übung umfasst:
- Testdaten erzeugen (JSON)
- MongoDB per Docker Compose starten
- JSON-Daten in MongoDB importieren
- Abfragen und Aggregationen durchführen
- Daten mit MongoDB Compass visualisieren
1) Voraussetzungen
Abschnitt betitelt „1) Voraussetzungen“- Docker + Docker Compose installiert
- Browserzugang zu https://www.generatedata.com/
- MongoDB Compass (GUI-Tool, verfügbar auf Windows/macOS/Linux)
Hinweis zu Shell-Befehlen:
- Windows: Alle PowerShell-Befehle verwenden
- macOS/Linux: Alle Bash-Befehle verwenden
- Die Übung dokumentiert beide Varianten wo nötig
2) Dataset mit GenerateData generieren
Abschnitt betitelt „2) Dataset mit GenerateData generieren“Verwende GenerateData.com zur Datengenerierung. Dieses Tool ist ähnlich wie Mockaroo.
2.1 Zum Editor navigieren
Abschnitt betitelt „2.1 Zum Editor navigieren“- Öffne: https://generatedata.com/generator
- Du siehst ein “New Data Set” Formular mit einer Tabelle
- Die Tabelle hat Spalten: Data Type | Property Name | Examples | Options
2.2 Felder konfigurieren
Abschnitt betitelt „2.2 Felder konfigurieren“Klicke auf “Select…” Dropdown unter “Data Type” und wähle den Feldtyp, dann gib den Namen ein.
Feld 1: GUID als order_id
Feld 2: Date als order_date Format: yyyy-MM-dd’T’HH:mm:ss’Z’
Feld 3: Number Range als customer_id Zwischen 1000 und 99999
Feld 4: Names als customer_name
Feld 5: Email als email
Feld 6: Country als country Wähle: AT, DE, CH
Feld 7: List als product_category Custom Values: Electronics, Books, Clothing, Home, Sports, Food
Feld 8: Fixed Number of Words als product_name Generate 2 words
Feld 9: Number Range als quantity Zwischen 1 und 20
Feld 10: Currency als unit_price Zwischen 10 und 500
Feld 11: Currency als total_amount Zwischen 10 und 10000
Feld 12: List als payment_method Custom Values: Credit Card, PayPal, Bank Transfer, Apple Pay
Feld 13: List als order_status Custom Values: pending, processing, shipped, delivered, cancelled
2.3 Anzahl und generieren
Abschnitt betitelt „2.3 Anzahl und generieren“- Stelle die “Anzahl der Datensätze” auf 500 ein
- Scrolle nach unten und klick “Generate” Button
- Im unteren Panel siehst du die Live-Vorschau
- Klicke “GENERATE”
2.4 Datei speichern
Abschnitt betitelt „2.4 Datei speichern“- Klicke “SAVE” oder “DOWNLOAD”
- Benenne um zu orders.json
- Speichere in mongodb-lab/data/ Ordner
- Überprüf: Datei sollte mit einem Array beginnen
2.5 Beispieldatensatz
Abschnitt betitelt „2.5 Beispieldatensatz“{ "order_id": "A3952EF4-4DC7-74DC-BA51-1769AE379759", "order_date": "2026-10-01T20:40:04Z", "customer_id": 29433, "customer_name": "Phoebe Gallagher", "country": "Sweden", "product_category": "Food", "product_name": "tellus id", "quantity": 7, "unit_price": 485, "total_amount": "20 705", "payment_method": "Bank Transfer", "order_status": "shipped" },3) Service Stack aufbauen
Abschnitt betitelt „3) Service Stack aufbauen“3.1 Ordnerstruktur
Abschnitt betitelt „3.1 Ordnerstruktur“Erstelle Projekt-Ordner mongodb-lab/:
mongodb-lab/ docker-compose.yml data/3.2 Docker Compose Datei
Abschnitt betitelt „3.2 Docker Compose Datei“Erstelle docker-compose.yml:
services: mongodb: image: mongo:7 container_name: mongodb ports: - "27017:27017" volumes: - mongodb_data:/data/db - mongodb_config:/data/configdb environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: mongodb-password restart: unless-stopped
mongo-express: image: mongo-express:latest container_name: mongo-express ports: - "8081:8081" depends_on: - mongodb environment: ME_CONFIG_MONGODB_ADMINUSERNAME: admin ME_CONFIG_MONGODB_ADMINPASSWORD: mongodb-password ME_CONFIG_MONGODB_URL: mongodb://admin:mongodb-password@mongodb:27017/ ME_CONFIG_BASICAUTH: false restart: unless-stopped
volumes: mongodb_data: mongodb_config:4) Container Stack starten
Abschnitt betitelt „4) Container Stack starten“Im Projekt-Ordner mongodb-lab/:
docker compose up -dPrüfe mit:
docker compose psWenn beide Container laufen:
- MongoDB Express UI: http://localhost:8081
- MongoDB Server: mongodb://localhost:27017
5) Datenbank und Collection erstellen
Abschnitt betitelt „5) Datenbank und Collection erstellen“Mit MongoDB Express (Web-UI):
- Öffne http://localhost:8081
- Klicke “Create Database” und gib ecommerce ein
- Erstelle Collection orders
Mit MongoDB CLI (alternative):
docker exec -it mongodb mongosh -u admin -p mongodb-password --authenticationDatabase adminDann in der Konsole:
use ecommercedb.createCollection("orders")6) JSON-Import in MongoDB
Abschnitt betitelt „6) JSON-Import in MongoDB“Das JSON-File soll als Array von Objekten vorhanden sein.
6.1 Windows PowerShell
Abschnitt betitelt „6.1 Windows PowerShell“Navigiere zuerst in den mongodb-lab Ordner.
docker run --rm ` --network mongodb-lab_default ` -v "${PWD}/data:/data" ` mongo:7 ` mongoimport ` --authenticationDatabase admin ` -u admin ` -p mongodb-password ` --host mongodb:27017 ` --db ecommerce ` --collection orders ` --file /data/orders.json ` --jsonArray6.2 macOS / Linux Bash
Abschnitt betitelt „6.2 macOS / Linux Bash“docker run --rm \ --network mongodb-lab_default \ -v "$(pwd)/data:/data" \ mongo:7 \ mongoimport \ --authenticationDatabase admin \ -u admin \ -p mongodb-password \ --host mongodb:27017 \ --db ecommerce \ --collection orders \ --file /data/orders.json \ --jsonArray7) Überprüfung des Imports
Abschnitt betitelt „7) Überprüfung des Imports“Mit MongoDB Express:
- Öffne http://localhost:8081
- Wähle ecommerce Datenbank
- Klicke auf orders Collection
- Dokumente sollte angezeigt werden
Mit MongoDB CLI:
docker exec mongodb mongosh -u admin -p mongodb-password --authenticationDatabase admin -e "use ecommerce; db.orders.countDocuments()"Sollte ~500 ausgeben.
8) Abfragen und Aggregationen
Abschnitt betitelt „8) Abfragen und Aggregationen“Schreibe die folgenden Abfragen und dokumentiere die Ergebnisse.
8.1 Einfache Abfragen
Abschnitt betitelt „8.1 Einfache Abfragen“Query 1: Alle Bestellungen mit Status delivered
- Verwende find mit Filter auf order_status
- Limit auf 10 Ergebnisse
Query 2: Bestellungen eines bestimmten Landes (AT)
- Filter nach country Feld
- Zeige 10 Ergebnisse
- Probiere auch DE, CH, CZ
Query 3: Bestellungen mit Gesamtbetrag größer 500
- Verwende GT Operator
- Limit: 10 Ergebnisse
Query 4: Bestellungen ohne Kundennamen
- Suche nach null oder nicht vorhanden
- Normalerweise 0 Ergebnisse
8.2 Aggregation Pipeline
Abschnitt betitelt „8.2 Aggregation Pipeline“Query 5: Durchschnittliche Bestellsumme pro Kategorie
- Verwende aggregate mit GROUP
- Berechne: Durchschnitt, Anzahl, Maximum
- Sortiere absteigend
Query 6: Top 5 Länder nach Umsatz
- Gruppiere nach country
- Summiere total_amount
- Top 5 nach Umsatz
Query 7: Bestellungen pro Zahlungsmethode und Status
- Gruppiere nach payment_method UND order_status
- Berechne: Anzahl, Durchschnittsbetrag
Query 8: Zeitreihe pro Tag und Kategorie
- Filtere letzte 30 Tage
- Formatiere Datum
- Gruppiere nach Tag + Kategorie
8.3 Updates
Abschnitt betitelt „8.3 Updates“Query 9: Ändere Status pending in processing
- Verwende updateMany
- Notiere: Wie viele Dokumente aktualisiert?
Query 10: Erhöhe PayPal-Bestellungen um 2%
- Filter: payment_method = PayPal
- Notiere: Wie viele aktualisiert?
9) MongoDB Compass GUI
Abschnitt betitelt „9) MongoDB Compass GUI“MongoDB Compass ist die offizielle GUI für MongoDB.
9.1 Installation
Abschnitt betitelt „9.1 Installation“Verfügbar auf Windows, macOS und Linux:
- Download: https://www.mongodb.com/products/tools/compass
- Windows: .msi Installer
- macOS: .dmg oder brew install mongodb-compass
- Linux: .deb oder snap install mongodb-compass
9.2 Verbindung
Abschnitt betitelt „9.2 Verbindung“- Starte MongoDB Compass
- New Connection: mongodb://admin:mongodb-password@localhost:27017
- Klicke Connect
- Du siehst alle Datenbanken und Collections
9.3 Praktische Anwendung
Abschnitt betitelt „9.3 Praktische Anwendung“Schritt 1: Daten durchstöbern
- Klicke ecommerce → orders
- Du siehst die ~500 Dokumente
- Klicke auf ein Dokument
Schritt 2: Filter verwenden
- Gib Filter ein: order_status = “delivered”
- Probiere: country = “AT”
- Probiere: total_amount > 500
Schritt 3: Aggregation Builder
- Tab Aggregations
- Add Stage: GROUP
- ID: country
- Aggregationen: total_revenue und order_count
- Add Stage: SORT
- Ergebnisse live sehen
Schritt 4: Schema analysieren
- Tab Schema
- Compass zeigt: Felder, Typen, Häufigkeit
9.4 Tipps
Abschnitt betitelt „9.4 Tipps“- Schreib Queries erst in Compass, dann ins Dokument
- Mache Screenshots für Dokumentation
- Nutze Aggregation Builder
- Debugging: build step-by-step
10) Abgabe
Abschnitt betitelt „10) Abgabe“Abzugebende Artefakte:
- docker-compose.yml Datei
- PDF oder Markdown mit:
- JSON-Schema Beschreibung (Feldnamen, Typen)
- Erste 3 Dokumente aus orders Collection (als JSON)
- Anzahl der importierten Dokumente
- Pro Query (1-10):
- Vollständiger Query-Code
- Kurze Beschreibung was die Query macht
- Beispielergebnisse mit mindestens 5 Reihen
- Screenshots aus MongoDB Compass (wenn möglich)
- README.md mit:
- Alle verwendeten Docker Commands
- Der mongoimport Command
- Befehle zum Ausführen der Queries
- Anleitung zur MongoDB Compass Installation