print("Anspruchsvolle Shooter-Spiele (mit separaten $match Stages):"); db.spiele .aggregate([ { $match: { genre: "Tactical Shooter" } }, { $match: { schwierigkeitsgrad: "Hoch" } }, ]) .forEach(printjson); print("\nSpieler Performance Übersicht:"); db.spieler .aggregate([ { $match: { gesamtpunktzahl: { $gt: 1000 }, }, }, { $project: { _id: 0, username: 1, performance_metrics: { punktzahl: "$gesamtpunktzahl", durchschnittliche_kd: { $avg: "$spielstatistiken.k_d_ratio", }, gesamt_spielzeit: { $sum: "$spielstatistiken.spielzeit_minuten", }, }, }, }, { $sort: { "performance_metrics.punktzahl": -1, }, }, ]) .forEach(printjson); print("\nGesamtstatistiken über alle Spieler:"); db.spieler .aggregate([ { $group: { _id: null, total_players: { $sum: 1 }, gesamtpunktzahl: { $sum: "$gesamtpunktzahl" }, durchschnittspunktzahl: { $avg: "$gesamtpunktzahl" }, }, }, ]) .forEach(printjson); print("\nAchievement-Statistiken nach Schwierigkeitsgrad:"); db.achievements .aggregate([ { $group: { _id: "$schwierigkeit", anzahl_achievements: { $sum: 1 }, durchschnittspunkte: { $avg: "$punktewert" }, gesamtpunkte: { $sum: "$punktewert" }, achievements: { $push: { name: "$name", punktewert: "$punktewert", }, }, }, }, { $sort: { durchschnittspunkte: -1, }, }, ]) .forEach(printjson); print("\nDurchschnittliche Leistung pro Spiel:"); db.spieler .aggregate([ { $unwind: "$spielstatistiken" }, { $group: { _id: "$spielstatistiken.spiel_id", anzahl_spieler: { $sum: 1 }, durchschnitt_kd: { $avg: "$spielstatistiken.k_d_ratio" }, gesamt_siege: { $sum: "$spielstatistiken.siege" }, gesamt_niederlagen: { $sum: "$spielstatistiken.niederlagen" }, durchschnitt_spielzeit: { $avg: "$spielstatistiken.spielzeit_minuten" }, }, }, { $lookup: { from: "spiele", localField: "_id", foreignField: "_id", as: "spielinfo", }, }, { $project: { _id: 0, spiel: { $arrayElemAt: ["$spielinfo.spielname", 0] }, statistiken: { spieler: "$anzahl_spieler", kd_ratio: { $round: ["$durchschnitt_kd", 2] }, siege: "$gesamt_siege", niederlagen: "$gesamt_niederlagen", avg_spielzeit: { $round: ["$durchschnitt_spielzeit", 0] }, }, }, }, ]) .forEach(printjson);