115 lines
2.7 KiB
JavaScript
115 lines
2.7 KiB
JavaScript
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);
|