TZT - Laboratorium 9 Biblioteka mongodb dla Express.js (Node.js)
Transkrypt
TZT - Laboratorium 9 Biblioteka mongodb dla Express.js (Node.js)
TZT - Laboratorium 9 Biblioteka mongodb dla Express.js (Node.js) Pracujemy na kolekcjach z poprzedniego laboratorium czyli • wydzialy - http://icis.pcz.pl/~rperlinski/wydzialy.json • studenci - http://icis.pcz.pl/~rperlinski/studenci.json Obie kolekcje powinny być zaimportowane i dostępne w bazie danych, np. w lab08. Pomoce: • Pomoc do lab: http://icis.pcz.pl/~rperlinski/files/tzt/lab09/lab09_pomoc.pdf • Szybki start: http://mongodb.github.io/node-mongodb-native/2.2/quick-start/ • Operacje CRUD: http://mongodb.github.io/node-mongodb-native/2.2/tutorials/crud/ • API: http://mongodb.github.io/node-mongodb-native/2.2/api/ Zadanie 0 – połączenie z bazą MongoDB Tworzymy aplikację w Express.js, w której korzystając z biblioteki mongodb łączymy się z bazą lab08 z poprzedniego laboratorium. Wyświetlamy w konsoli informację o udanym połączeniu. Zadanie 1 – metoda count() Pod adresem '/lstud' aplikacja powinna wyświetlać liczbę dokumentów z kolekcji studenci, np.: Zadanie 2 – metoda count() i parametry Dodajemy obsługę adresu '/liczba/:db/:collection'. Dostęp do parametrów adresu URL mamy poprzez obiekt zapytania, czyli np. req.params.db. Wynikiem działania powinna być informacja o liczbie dokumentów w bazie danych i kolekcji określonych w adresie URL. Przykładowo adres: http://localhost:3000/liczba/lab06/restauracje zwraca informację: Liczba dokumentów w kolekcji restauracje: 25359 Zadanie 3 – metoda find() Pod adresem '/wydzialy' nasza aplikacja powinna wyświetlać informację o wydziałach naszej politechniki. Proszę wyświetlić przynajmniej nazwę wydziału i ID dokumentu. Przykładowy wynik: Wydziały na PCz: 1. Wydział Inżynierii Mechanicznej i Informatyki - WIMiI (583ad919beeec1288f74d8bd), liczba kierunków: 6 * Energetyka * Informatyka * Inżynieria biomedyczna * Matematyka * Mechanika i budowa maszyn * Mechatronika 2. Wydział Zarządzania - WZ (583ada4bbeeec1288f74d8be), liczba kierunków: 7 * Finanse i Rachunkowość * Logistyka ... Zadanie 4 – metoda aggregate() Korzystając z kolekcji studenci i potoku agregacji proszę wyświetlić pod adresem '/nabor' liczby studentów na każdym wydziale zaczynając od najliczniejszego. Wyświetlamy na razie tylko ID wydziału i liczbę studentów. Oczekiwany wynik: Id wydziału : liczba 583ad919beeec1288f74d8bd : 6 583ada4ebeeec1288f74d8c1 : 3 583ada4bbeeec1288f74d8be : 3 583adffabeeec1288f74d8c2 : 3 583ada4bbeeec1288f74d8bf : 3 583ada4cbeeec1288f74d8c0 : 2 Zadanie 5 – metoda findOne(), klasa ObjectID Pod adresem '/wydzialy/:id' aplikacja powinna wyświetlić nazwę wydziału, którego id podano w parametrze. Zadanie 6 – połączenie zadania 4 i 5, metoda equal() klasy ObjectID Modyfikujemy zadanie 4 w taki sposób, żeby zamiast id wydziału wyświetlała się jego nazwa. Pod adresem '/nabor2' aplikacja może wyświetlić coś takiego: Należy jakoś wybrać odpowiednią nazwę wydziału zgodną z _id uzyskane z grupowania w zadaniu 4. Można zrobić osobną funkcję, można zagnieździć pętlę w pętli...