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...