// 1 KOLOS W załączonym pliku „kolokwium.zip”, w pliku „dane.json” znajduje się definicja bazy dokumentowej MongoDB opisującej następujące dane na temat „osób”: - unikatowy identyfikator (dodatnia liczba całkowita) - imię i nazwisko (ciąg znaków) - ojciec, matka (dodatnie liczby całkowite) Zaimportuj dane do MongoDB za pomocą skryptu „imp_do_mongo.js” (skrypt zakłada, że serwer działa na loclahost), sprawdź, że import się powiódł, a następnie wykonaj poniższe polecenia. Stwórz skrypt „rozwiazanie/bazaNeo4j.js”, wykorzystujący Node.js, który zdefiniuje bazę grafową w Neo4j posiadającą następującą strukturę: węzły: Person(imię i nazwisko) krawędzie: matka, ojciec Stwórz skrypt „rozwiazanie/import.js” wykorzystujący Node.js importujący dane z bazy MongoDB do utworzonej bazy Neo4j Używając Node.js zaprojektuj i stwórz w pliku o nazwie „rozwiazanie/serwer.js” serwer realizujący API REST-owe (wykorzystujące format JSON do przekazywania danych – w obie strony) odpowiadające na pytania przodkowie n-tego rzędu (rodzice, dziadkowie, pradziadkowie, ...) kuzyni (dzieci brata lub siostry matki lub ojca) osoby, których ojciec ma rodzeństwo, a matka jest jedynakiem zbiory osób, będących rodzeństwem, które mają maksymalną liczebność W pliku „rozwiazanie/api.md” stwórz prostą dokumentację powyższego API opisującą dla każdego „endpointu” API następujące elementy ścieżka typy i znaczenie argumentów obiekt zwracany Rozwiązanie (czyli zawartość podkatalogu „rozwiązanie”) umieść na GitLabie, w podkatalogu o nazwie „kolokwium” (oczywiście pomiń podkatalog node_modules). W szczególności muszą się tam znaleźć pliki, które stanowią rozwiązanie kolokwium: - „bazaNeo4j.js” - „import.js” - „serwer.js” (serwer obsługujący API opisane w punkcie 3) - „api.md” (plik Markdown z krótką „dokumentacją” API) Upewnij się, że kompletne rozwiązanie faktycznie trafiło do Twojego repozytorium związanego z naszym przedmiotem na GitLabie! // 2 KOLOS Zadanie 1. (Neo4j) Stwórz zapytanie, które wyławia drużyny klubowe w których gra co najmniej 7 reprezentantów kraju, z którego dana drużyna pochodzi. Zapytanie powinno zwrócić nazwę klubu, poszukiwaną listę zawodników, jej długość oraz nazwę kraju, który reprezentują. Zadanie 2. (Neo4j) Stwórz zapytanie zwracające dane na temat klubów, w których gra maksymalnie wielu reprezentantów kraju, z którego NIE pochodzi sam klub. Wynik powinien zawierać: nazwę klubu, listę (bez powtórzeń) reprezentantów oraz kraj, który reprezentują. Zadanie 3. (Neo4j) Stwórz zapytanie zwracające wszystkie kraje, których zawodnicy nie grają w klubach, w których występują reprezentanci kraju Y (parametr). Zadanie 4. (MongoDB) 1. W oparciu o podane niżej „sugestie” zdefiniuj bazę MongoDB i używając Node.js zaimportuj do niej dane z bazy Neo4j. Skrypt importujący dane, który musisz uzupełnić, to „importDanych.js”. Poniżej fragment definicji bazy MongoDB (z użyciem Mongoose) – zauważ, że „modele” (Country oraz Club) zostały użyte, ale nie zostały w nim zdefiniowane – musisz to uzupełnić. Zwróć uwagę na fakt, że informacje na temat kraju (odnośnie zarówno reprezentacji jak i klubu) zostały wyodrębnione (inaczej niż w przypadku bazy Neo4j). countrySchema = new mongoose.Schema({ name: { type: String, required: true } }); clubSchema = new mongoose.Schema({ name: { type: String, required: true }, country: { type: mongoose.Schema.Types.ObjectId, ref: 'Country', required: true } }); playerSchema = new mongoose.Schema({ name: { type: String, required: true }, playsFor: { type: mongoose.Schema.Types.ObjectId, ref: 'Club', required: true }, represents: { type: mongoose.Schema.Types.ObjectId, ref: 'Country' } }); 2. Używając języka zapytań MongoDB stwórz zapytanie, które zwraca listę reprezentacji narodowych, które da się zbudować z zawodników grających w minimalnej liczbie zagranicznych drużyn klubowych. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % UWAGA! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Przed zakończeniem kolokwium należ spakować (ZIP) i przesłać do odpowiedniego prowadzącego pliki: - zad_01.cypher - zad_02.cypher - zad_03.cypher - importDanych.js - zad_04.js - package*.json Plik ZIP powinien mieć nazwę: .zip, gdzie zamiast „nazwisko” („imię”) wstawisz SWOJE nazwisko i imię (bez polskich znaków).