106 lines
2.4 KiB
JavaScript
106 lines
2.4 KiB
JavaScript
print("Spielstatistiken aller Spieler:");
|
|
db.spieler
|
|
.find({}, { _id: 0, username: 1, spielstatistiken: 1 })
|
|
.forEach(printjson);
|
|
|
|
print("\nSpieler mit K/D-Ratio über 1.8 in irgendeinem Spiel:");
|
|
db.spieler
|
|
.find(
|
|
{
|
|
"spielstatistiken.k_d_ratio": { $gt: 1.8 },
|
|
},
|
|
{
|
|
username: 1,
|
|
spielstatistiken: {
|
|
$filter: {
|
|
input: "$spielstatistiken",
|
|
as: "stat",
|
|
cond: { $gt: ["$$stat.k_d_ratio", 1.8] },
|
|
},
|
|
},
|
|
}
|
|
)
|
|
.forEach(printjson);
|
|
|
|
print("\nVerflachte Spielerstatistiken:");
|
|
db.spieler
|
|
.aggregate([
|
|
{ $unwind: "$spielstatistiken" },
|
|
|
|
{
|
|
$match: {
|
|
"spielstatistiken.spielzeit_minuten": { $gt: 1000 },
|
|
},
|
|
},
|
|
|
|
{
|
|
$project: {
|
|
_id: 0,
|
|
spieler: "$username",
|
|
spiel_id: "$spielstatistiken.spiel_id",
|
|
statistiken: {
|
|
siege: "$spielstatistiken.siege",
|
|
niederlagen: "$spielstatistiken.niederlagen",
|
|
k_d_ratio: "$spielstatistiken.k_d_ratio",
|
|
spielzeit: "$spielstatistiken.spielzeit_minuten",
|
|
letztes_spiel: "$spielstatistiken.letztes_spiel",
|
|
},
|
|
},
|
|
},
|
|
|
|
{
|
|
$sort: {
|
|
"statistiken.k_d_ratio": -1,
|
|
},
|
|
},
|
|
])
|
|
.forEach(printjson);
|
|
|
|
print("\nDurchschnittliche Statistiken pro Spiel:");
|
|
db.spieler
|
|
.aggregate([
|
|
{ $unwind: "$spielstatistiken" },
|
|
|
|
{
|
|
$group: {
|
|
_id: "$spielstatistiken.spiel_id",
|
|
anzahl_spieler: { $sum: 1 },
|
|
durchschnitt_kd: { $avg: "$spielstatistiken.k_d_ratio" },
|
|
gesamt_spielzeit: { $sum: "$spielstatistiken.spielzeit_minuten" },
|
|
gesamt_siege: { $sum: "$spielstatistiken.siege" },
|
|
gesamt_niederlagen: { $sum: "$spielstatistiken.niederlagen" },
|
|
},
|
|
},
|
|
|
|
{
|
|
$lookup: {
|
|
from: "spiele",
|
|
localField: "_id",
|
|
foreignField: "_id",
|
|
as: "spiel_info",
|
|
},
|
|
},
|
|
|
|
{
|
|
$project: {
|
|
_id: 0,
|
|
spiel: { $arrayElemAt: ["$spiel_info.spielname", 0] },
|
|
statistiken: {
|
|
spieler: "$anzahl_spieler",
|
|
avg_kd: { $round: ["$durchschnitt_kd", 2] },
|
|
spielzeit_stunden: {
|
|
$round: [{ $divide: ["$gesamt_spielzeit", 60] }, 1],
|
|
},
|
|
siege: "$gesamt_siege",
|
|
niederlagen: "$gesamt_niederlagen",
|
|
},
|
|
},
|
|
},
|
|
|
|
{
|
|
$sort: {
|
|
"statistiken.spieler": -1,
|
|
},
|
|
},
|
|
])
|
|
.forEach(printjson);
|