Untitled

 avatar
unknown
plain_text
10 months ago
6.7 kB
3
Indexable
Zadanie 1 - Mongo Shell

1) Utwórz bazę danych o nazwie university i kolekcję students.

    use university
    db.createCollection("students")

2) Wstaw 10 studentów do kolekcji students z polami: firstName, lastName, age, group,
yearOfStudy.
Informacje do pól age, group, yearOfStudy:
a) Dla przynajmniej jednego studenta wpisz Math w liście przedmiotów (subjects)
b) age podawaj w granicach 16-25 lat.
c) group podawaj wpisz A, B, C, D lub E.
d) yearOfStudy wpisz wartości liczbowe

    db.students.insertMany([
    {
        firstName: "Hubert",
        lastName: "Rozumek",
        age: 20,
        group: "A",
        yearOfStudy: 2,
        subjects: ["Math", "Physics"]
    },
    {
        firstName: "Jan",
        lastName: "Kowalski",
        age: 22,
        group: "B",
        yearOfStudy: 3,
        subjects: ["Biology", "Chemistry"]
    },
    {
        firstName: "Marek",
        lastName: "Ogarek",
        age: 19,
        group: "C",
        yearOfStudy: 1,
        subjects: ["Math", "English"]
    },
    {
        firstName: "Robert",
        lastName: "Nowak",
        age: 23,
        group: "D",
        yearOfStudy: 4,
        subjects: ["History", "Geography"]
    },
    {
        firstName: "Filip",
        lastName: "Kowalski",
        age: 18,
        group: "E",
        yearOfStudy: 1,
        subjects: ["Math", "Art"]
    },
    {
        firstName: "Hubert",
        lastName: "Ogórek",
        age: 21,
        group: "A",
        yearOfStudy: 3,
        subjects: ["Economics", "Math"]
    },
    {
        firstName: "Hubert",
        lastName: "Marchewka",
        age: 25,
        group: "B",
        yearOfStudy: 5,
        subjects: ["Math", "Computer Science"]
    },
    {
        firstName: "Hubert",
        lastName: "Rzodkiewka",
        age: 24,
        group: "C",
        yearOfStudy: 4,
        subjects: ["Math", "Philosophy"]
    },
    {
        firstName: "Hubert",
        lastName: "Pietruszka",
        age: 17,
        group: "D",
        yearOfStudy: 1,
        subjects: ["Chemistry", "Math"]
    },
    {
        firstName: "Hubert",
        lastName: "Roszponka",
        age: 16,
        group: "E",
        yearOfStudy: 1,
        subjects: ["Physics", "Math"]
    }
]);

3) Dodaj 5 dokumentów (grupowo) do kolekcji students

db.students.insertMany([
    {
        firstName: "Oliver",
        lastName: "Kowalski",
        age: 18,
        group: "A",
        yearOfStudy: 1,
        subjects: ["Math", "Chemistry"]
    },
    {
        firstName: "Sonia",
        lastName: "Nowak",
        age: 19,
        group: "B",
        yearOfStudy: 2,
        subjects: ["Physics", "Math"]
    },
    {
        firstName: "Liam",
        lastName: "Kozlowski",
        age: 20,
        group: "C",
        yearOfStudy: 2,
        subjects: ["Biology", "Math"]
    },
    {
        firstName: "Emma",
        lastName: "Stone",
        age: 21,
        group: "D",
        yearOfStudy: 3,
        subjects: ["Math", "Literature"]
    },
    {
        firstName: "Leonardo",
        lastName: "Di Caprio",
        age: 22,
        group: "E",
        yearOfStudy: 3,
        subjects: ["History", "Math"]
    }
]);

4) Zaktualizuj pole yearOfStudy dla wszystkich studentów, których age jest większe niż 20
lat.

    db.students.updateMany(
    {age: {$gt: 20}},
    {$set: {yearOfStudy: 4}}
)


5) Usuń wszystkich studentów, których age jest mniejsze niż 18 lat oraz tych, których age
jest większy niż 22 lata.

    db.students.deleteMany(
    {age: {$lt: 22}}
)

6) Dodaj 2 dokumenty do kolekcji students (pojedyńczo).

    db.students.insertOne({firstName: "Tomek", lastName: "Lewandowski", age: 23, group: "D", yearOfStudy: 3, subjects: ["History", "Math"]})
    db.students.insertOne({firstName: "Piotr", lastName: "Oregano", age: 20, group: "E", yearOfStudy: 2, subjects: ["History", "Math"]})

7) Wyszukaj studentów, którzy są na trzecim roku studiów (yearOfStudy = 3).

    db.students.find({ yearOfStudy: 3 }).pretty();

Zadanie 2 - Replica Sets
Przedstaw wszystkie komendy potrzebne do wykonania poniższych zadań.

1) Utwórz strukturę katalogów dla trzech instancji: jedna primary i dwie secondary (porty
10000, 20000, 30000).

    mkdir -p /data/rs1 /data/rs2 /data/rs3
    
    
    mongod --replSet rs0 --port 10000 --dbpath /data/rs1 --oplogSize 128 --fork --logpath /data/rs1/mongod.log
    mongod --replSet rs0 --port 20000 --dbpath /data/rs2 --oplogSize 128 --fork --logpath /data/rs2/mongod.log
    mongod --replSet rs0 --port 30000 --dbpath /data/rs3 --oplogSize 128 --fork --logpath /data/rs3/mongod.log

2) Skonfiguruj replica set.
    mongo --port 10000
    
    rs.initiate({
      _id: "rs0",
      members: [
        { _id: 0, host: "localhost:10000" },
        { _id: 1, host: "localhost:20000" },
        { _id: 2, host: "localhost:30000" }
      ]
    })

3) Dodaj nową instancję primary (port 40000) i usuń instancję na porcie 30000.

    mkdir -p /data/rs4
    
    
    mongod --replSet rs0 --port 40000 --dbpath /data/rs4 --oplogSize 128 --fork --logpath /data/rs4/mongod.log

    mongo --port 10000
    
    # Dodaj
    rs.add("localhost:40000")
    
    # Usuń
    rs.remove("localhost:30000")

4) Zrekonfiguruj replica set.

    cfg = rs.conf()

    cfg.members[0].priority = 1
    cfg.members[1].priority = 0.5
    cfg.members[2].priority = 0.5
    cfg.members[3].priority = 2
    
    rs.reconfig(cfg)

5) Wyłącz instancję primary i sprawdź, która secondary stanie się nowym primary.
    kill <PID>
    
    mongo --port 20000  # lub 40000, jeśli port 20000 nie odpowiada
    rs.status()

6) Wstaw dane studenta takie jak w zadaniu 1.

mongo --port <new_primary_port>

db.students.insertMany([
    {
        firstName: "Karol",
        lastName: "Nowak",
        age: 20,
        group: "A",
        yearOfStudy: 2,
        subjects: ["Math", "Physics"]
    },
    {
        firstName: "Will",
        lastName: "Smith",
        age: 22,
        group: "B",
        yearOfStudy: 3,
        subjects: ["Biology", "Chemistry"]
    },
    {
        firstName: "Bill",
        lastName: "Gates",
        age: 19,
        group: "C",
        yearOfStudy: 1,
        subjects: ["Math", "English"]
    },
    {
        firstName: "Robert",
        lastName: "Brown",
        age: 23,
        group: "D",
        yearOfStudy: 4,
        subjects: ["History", "Geography"]
    },
    {
        firstName: "Paul",
        lastName: "McCartney",
        age: 18,
        group: "E",
        yearOfStudy: 1,
        subjects: ["Math", "Art"]
    }
]);

7) Odczytaj dane z instancji secondary.

    mongo --port 20000  # Połącz z instancją secondary


    rs.slaveOk()
    
    
    db.students.find().pretty();


Editor is loading...
Leave a Comment