print("Spieler mit Details ihrer Achievements:"); db.spieler .aggregate([ { $lookup: { from: "achievements", let: { spielerId: "$_id" }, pipeline: [ { $match: { $expr: { $in: ["$$spielerId", "$errungen_von.spieler_id"], }, }, }, ], as: "erreichte_achievements", }, }, { $project: { username: 1, gesamtpunktzahl: 1, achievements: { $map: { input: "$erreichte_achievements", as: "achievement", in: { name: "$$achievement.name", punktewert: "$$achievement.punktewert", schwierigkeit: "$$achievement.schwierigkeit", }, }, }, }, }, ]) .forEach(printjson); print("\nDetailierte Spieleranalyse mit Spiel- und Achievement-Informationen:"); db.spieler .aggregate([ { $unwind: "$spielstatistiken" }, { $lookup: { from: "spiele", localField: "spielstatistiken.spiel_id", foreignField: "_id", as: "spiel_details", }, }, { $lookup: { from: "achievements", let: { spielerId: "$_id" }, pipeline: [ { $match: { $expr: { $in: ["$$spielerId", "$errungen_von.spieler_id"], }, }, }, ], as: "achievements", }, }, { $project: { _id: 0, spieler: "$username", spiel: { $arrayElemAt: ["$spiel_details.spielname", 0] }, genre: { $arrayElemAt: ["$spiel_details.genre", 0] }, leistung: { siege: "$spielstatistiken.siege", niederlagen: "$spielstatistiken.niederlagen", k_d_ratio: "$spielstatistiken.k_d_ratio", spielzeit: "$spielstatistiken.spielzeit_minuten", }, achievements: { anzahl: { $size: "$achievements" }, gesamtpunkte: { $sum: "$achievements.punktewert" }, liste: "$achievements.name", }, }, }, { $match: { "leistung.k_d_ratio": { $gt: 1.5 }, }, }, { $sort: { "leistung.k_d_ratio": -1, }, }, ]) .forEach(printjson); print("\nSpiel-Achievement-Analyse:"); db.spiele .aggregate([ { $lookup: { from: "achievements", let: { spielId: "$_id" }, pipeline: [ { $match: { $expr: { $gt: [{ $size: "$errungen_von" }, 1], }, }, }, ], as: "spiel_achievements", }, }, { $lookup: { from: "spieler", let: { spielId: "$_id" }, pipeline: [ { $unwind: "$spielstatistiken" }, { $match: { $expr: { $eq: ["$spielstatistiken.spiel_id", "$$spielId"], }, }, }, ], as: "spieler_stats", }, }, { $project: { spielname: 1, genre: 1, schwierigkeitsgrad: 1, statistiken: { aktive_spieler: { $size: "$spieler_stats" }, durchschnitt_kd: { $avg: "$spieler_stats.spielstatistiken.k_d_ratio", }, gesamt_spielzeit: { $sum: "$spieler_stats.spielstatistiken.spielzeit_minuten", }, achievements: { anzahl: { $size: "$spiel_achievements" }, schwierigkeitsverteilung: { $reduce: { input: "$spiel_achievements", initialValue: { einfach: 0, mittel: 0, schwer: 0 }, in: { einfach: { $add: [ "$$value.einfach", { $cond: [ { $eq: ["$$this.schwierigkeit", "Niedrig"] }, 1, 0, ], }, ], }, mittel: { $add: [ "$$value.mittel", { $cond: [ { $eq: ["$$this.schwierigkeit", "Mittel"] }, 1, 0, ], }, ], }, schwer: { $add: [ "$$value.schwer", { $cond: [ { $eq: ["$$this.schwierigkeit", "Sehr Hoch"] }, 1, 0, ], }, ], }, }, }, }, }, }, }, }, { $sort: { "statistiken.aktive_spieler": -1, }, }, ]) .forEach(printjson);