- // 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ę: <nazwisko-imię>.zip, gdzie zamiast „nazwisko” („imię”) wstawisz
- SWOJE nazwisko i imię (bez polskich znaków).