fix structure

This commit is contained in:
Jannis 2025-02-19 19:54:56 +01:00
parent 3cc4ae5699
commit a7e1a41de4
31 changed files with 102 additions and 13 deletions

153
KN03/create_data.js Normal file
View file

@ -0,0 +1,153 @@
const valorantId = new ObjectId();
const csgoId = new ObjectId();
const apexId = new ObjectId();
db.spiele.insertMany([
{
_id: valorantId,
spielname: "Valorant",
genre: "Tactical Shooter",
schwierigkeitsgrad: "Hoch",
},
{
_id: csgoId,
spielname: "CS:GO",
genre: "Tactical Shooter",
schwierigkeitsgrad: "Hoch",
},
{
_id: apexId,
spielname: "Apex Legends",
genre: "Battle Royale",
schwierigkeitsgrad: "Mittel",
},
]);
const player1Id = new ObjectId();
const player2Id = new ObjectId();
const player3Id = new ObjectId();
const player4Id = new ObjectId();
db.spieler.insertOne({
_id: player1Id,
username: "ProGamer123",
email: "progamer@gaming.com",
registrierungsdatum: new Date("2024-01-15"),
gesamtpunktzahl: 2500,
rang: 1,
spielstatistiken: [
{
spiel_id: valorantId,
punktzahl: 1500,
siege: 42,
niederlagen: 18,
k_d_ratio: 1.8,
spielzeit_minuten: 1800,
letztes_spiel: new Date("2024-02-15"),
},
{
spiel_id: csgoId,
punktzahl: 1000,
siege: 35,
niederlagen: 25,
k_d_ratio: 1.5,
spielzeit_minuten: 1500,
letztes_spiel: new Date("2024-02-10"),
},
],
});
db.spieler.insertMany([
{
_id: player2Id,
username: "GameMaster99",
email: "master99@gaming.com",
registrierungsdatum: new Date("2024-01-20"),
gesamtpunktzahl: 2200,
rang: 2,
spielstatistiken: [
{
spiel_id: valorantId,
punktzahl: 1200,
siege: 38,
niederlagen: 22,
k_d_ratio: 1.6,
spielzeit_minuten: 1600,
letztes_spiel: new Date("2024-02-14"),
},
],
},
{
_id: player3Id,
username: "NoobSlayer",
email: "slayer@gaming.com",
registrierungsdatum: new Date("2024-02-01"),
gesamtpunktzahl: 1800,
rang: 3,
spielstatistiken: [
{
spiel_id: apexId,
punktzahl: 1800,
siege: 25,
niederlagen: 15,
k_d_ratio: 2.1,
spielzeit_minuten: 900,
letztes_spiel: new Date("2024-02-16"),
},
],
},
]);
const achievement1Id = new ObjectId();
const achievement2Id = new ObjectId();
const achievement3Id = new ObjectId();
db.achievements.insertMany([
{
_id: achievement1Id,
name: "Flawless Victory",
beschreibung: "Gewinne ein Spiel ohne zu sterben",
punktewert: 500,
schwierigkeit: "Sehr Hoch",
errungen_von: [
{
spieler_id: player1Id,
erreicht_am: new Date("2024-02-01"),
},
],
},
{
_id: achievement2Id,
name: "First Blood",
beschreibung: "Erziele den ersten Kill in 50 Spielen",
punktewert: 200,
schwierigkeit: "Mittel",
errungen_von: [
{
spieler_id: player1Id,
erreicht_am: new Date("2024-01-20"),
},
{
spieler_id: player2Id,
erreicht_am: new Date("2024-02-05"),
},
],
},
{
_id: achievement3Id,
name: "Veteran",
beschreibung: "Spiele 100 Stunden",
punktewert: 300,
schwierigkeit: "Niedrig",
errungen_von: [
{
spieler_id: player1Id,
erreicht_am: new Date("2024-02-10"),
},
{
spieler_id: player3Id,
erreicht_am: new Date("2024-02-15"),
},
],
},
]);

3
KN03/delete_data_1.js Normal file
View file

@ -0,0 +1,3 @@
db.spieler.drop();
db.spiele.drop();
db.achievements.drop();

9
KN03/delete_data_2.js Normal file
View file

@ -0,0 +1,9 @@
const playerToDeleteId = new ObjectId("65c4d2e6b3c72d3c45a77777");
const achievement1ToDeleteId = new ObjectId("65c4d2e6b3c72d3c45a88888");
const achievement2ToDeleteId = new ObjectId("65c4d2e6b3c72d3c45a99999");
db.spieler.deleteOne({ _id: playerToDeleteId });
db.achievements.deleteMany({
$or: [{ _id: achievement1ToDeleteId }, { _id: achievement2ToDeleteId }],
});

44
KN03/read_data.js Normal file
View file

@ -0,0 +1,44 @@
print("Neue Spieler seit 15. Januar 2024:");
db.spieler.find(
{ registrierungsdatum: { $gt: new Date("2024-01-15") } },
{ username: 1, registrierungsdatum: 1 }
).forEach(printjson);
print("\nTop Performer (hohe Punktzahl oder viele Siege):");
db.spieler.find({
$or: [
{ gesamtpunktzahl: { $gt: 2000 } },
{ "spielstatistiken.siege": { $gt: 40 } }
]
}).forEach(printjson);
print("\nAnspruchsvolle Shooter-Spiele:");
db.spiele.find({
$and: [
{ genre: "Tactical Shooter" },
{ schwierigkeitsgrad: "Hoch" }
]
}).forEach(printjson);
print("\nSpieler mit 'Pro' oder 'Game' im Namen:");
db.spieler.find(
{ username: { $regex: /Pro|Game/i } },
{ _id: 0, username: 1, gesamtpunktzahl: 1 }
).forEach(printjson);
print("\nBegehrte Achievements:");
db.achievements.find({
punktewert: { $gt: 200 },
"errungen_von.1": { $exists: true }
}).forEach(printjson);
print("\nValorant Spielerstatistiken:");
db.spieler.find(
{ "spielstatistiken.punktzahl": { $gt: 1000 } },
{
username: 1,
"spielstatistiken.$": 1
}
).forEach(printjson);

17
KN03/readme.md Normal file
View file

@ -0,0 +1,17 @@
# A: Daten einfügen
[create_Data.js](create_Data.js)
# B: Daten löschen
[delete_data_1.js](delete_data_1.js)
[delete_data_2.js](delete_data_2.js)
# C: Daten auslesen
[read_data.js](read_data.js)
# D: Daten verändern
[update_data.js](update_data.js)

50
KN03/update_data.js Normal file
View file

@ -0,0 +1,50 @@
const playerToUpdateId = new ObjectId("65c4d2e6b3c72d3c45a77777");
db.spieler.updateOne(
{ _id: playerToUpdateId },
{
$set: {
gesamtpunktzahl: 3000,
rang: 1,
},
$push: {
spielstatistiken: {
spiel_id: new ObjectId("65c4d2e6b3c72d3c45a66666"),
punktzahl: 500,
siege: 15,
niederlagen: 5,
k_d_ratio: 2.0,
spielzeit_minuten: 300,
letztes_spiel: new Date(),
},
},
}
);
db.spiele.updateMany(
{
$or: [{ genre: "Tactical Shooter" }, { genre: "Battle Royale" }],
},
{
$set: {
version: "2.0",
letztes_update: new Date(),
},
}
);
db.achievements.replaceOne(
{ name: "First Blood" },
{
name: "First Blood Pro",
beschreibung: "Erziele den ersten Kill in 100 Spielen",
punktewert: 500,
schwierigkeit: "Sehr Hoch",
errungen_von: [],
anforderungen: {
anzahl_spiele: 100,
zeitlimit_tage: 30,
mindest_kdRatio: 1.5,
},
}
);