pomoc do laboratorium - Instytut Informatyki Teoretycznej i Stosowanej
Transkrypt
pomoc do laboratorium - Instytut Informatyki Teoretycznej i Stosowanej
MongoDB - pomoc do laboratorium MongoDB - pomoc do laboratorium Technologie Zarządzania Treścią dr inż. Robert Perliński [email protected] Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej 1/19 Importowanie danych do MongoDB Importowanie danych zawartych w plikach JSON poleceniem mongoimport Przykład: mongoimport --db test --collection restaurants --drop --file restaurants-dataset.json Polecenie mongoimport: wstawia dokumenty do bazy test, do kolekcji restaurants, jeśli kolekcja restauracje już istaniała to zostanie usunięta: --drop, dane zawarte w pliku restaurants-dataset.json, parametr --file, dane w pliku to lista dokumentów nie oddzielonych przecinkiem, łączy się z mongod uruchomionym na localhost, port 27017, parametry --host i --port w razie potrzeby. MongoDB - pomoc do laboratorium 2/19 Exportowanie danych z MongoDB Exportowanie danych znajdujących się w bazie MongoDB mongoexport Przykład: mongoexport --db test --collection restaurants --query '{"dzielnica":"Bronx"}' --fields dzielnica,adres --out bronxRestaurants.json Polecenie mongoexport: zapisuje kolekcję restaurants z bazy test w pliku tekstowym, dane zapisywane są w pliku bronxRestaurants.json, parametr --out, (domyślnym formatem jest JSON), parametr --query pozwala wprowadzić zapytanie w formacie JSON ograniczające liczbę dokumentów pobranych z kolekcji, parametr --fields pozwala określić, które pola dokumentu mają być eksportowane, łączy się z mongod uruchomionym na localhost, port 27017, parametry --host i --port w razie potrzeby. MongoDB - pomoc do laboratorium 3/19 Wybrane polecenia w mongo shell I Polecenia w mongo: help - wyświetla pomoc, klawisz TAB dopełnia polecenia, show dbs - wyświetla listę baz, use test - przełącza na bazę test, show collections - wyświetla listę kolekcji, db.help() - wyświetla listę dostępnych metod dla bazy danych, db.dropDatabase() - uwuwa bieżącą bazę danych, db.getName() - wyświetla nazwę bieżącej bazy, db.stats() - wyświetla statystyki bieżącej bazy, db.hostInfo() - informacje o serwerze, db.version() - wyświetla wersję serwera. MongoDB - pomoc do laboratorium 4/19 Wybrane polecenia w mongo shell II Polecenia w mongo: db.osoby.help() - wyświetla listę dostępnych metod dla kolekcji osoby, db.osoby.count() - wyświetla liczbę dokumentów w kolekcji, db.osoby.find() - wyświetla zawartość kolekcji osoby, db.osoby.find({"imie":"Wojciech"}) – zwraca te dokumenty, które spełniają warunek, db.osoby.remove() - usuwa dokumenty z kolekcji, db.osoby.drop() - usuwa kolekcję osoby z bazy danych, db.osoby.insert({ "imie": "Wojciech", "nazwisko": "Paluch", "dataUr": "1985/07/14", "kraj": "Polska" }) - wstawia dane do kolekcji, db.osoby.getIndexes() - wyświetla informacje o indeksach kolekcji osoby. MongoDB - pomoc do laboratorium 5/19 Polecenia systemowe w mongo shell Polecenia systemowe w mongo shell: ls() - lista zawartości bieżącego katalogu jako tablica JSON, listFiles() - lista zawartości bieżącego katalogu, jako tablia JSON, każde pole to obiekt (nazwa, wielkość, czy jest katalogiem), pwd() - pokazje bieżący katalog, cd() - zmiana katalogu, np. cd("Pulpit"), cd(".."), cat() - wyświetla zawartość pliku, np. cat("plik.json"), mkdir() - tworzy katalog, np. mkdir("templates"), removeFile() - usuwa plik, katalog, np. removeFile("abc.json"), exit, quit() - wyłącza mongo shell. MongoDB - pomoc do laboratorium 6/19 Skrypty w mongo shell Skrypty w mongo shell: korzystają z poleceń mongo shell i języka JavsScript, uruchamiamy z terminala: mongo [--quiet] < skrypt.js Przykład 1: skrypt.js use lab06 print('Liczba dokumentów w kolekcji osoby, polecenie:'); db.osoby.count() Przykład 2: skrypt.js - wykorzystanie języka JavaScript print('Nazwy wszystkich osób z kolekcji'); var cursor = db.osoby.find( {}, {_id:0,nazwa:1} ) while (cursor.hasNext()) { print(tojson(cursor.next())); } MongoDB - pomoc do laboratorium 7/19 Restauracje - przykładowy dokument { "_id" : ObjectId("5667127503cc04bb98aabd9b"), "adres" : { "numer" : "1007", "wspolrzedne" : [ -73.856077, 40.848447 ], "ulica" : "Morris Park Ave", "kod" : "10462" }, "dzielnica" : "Bronx", "jedzenie" : "Bakery", "oceny" : [ { "data" : ISODate("2014-03-03T00:00:00Z"), "ocena" : "A", "punkty" : 2 }, { "data" : ISODate("2013-09-11T00:00:00Z"), "ocena" : "A", "punkty" : 6 }, { "data" : ISODate("2013-01-24T00:00:00Z"), "ocena" : "A", "punkty" : 10 } ], "nazwa" : "Morris Park Bake Shop", "rest_id" : "30075445" } MongoDB - pomoc do laboratorium 8/19 Pobieranie danych Wyszukiwanie danych - metoda find(): db.kolekcja.find(<zapytanie>, <projekcja>) oba parametry są opcjonalne, <zapytanie> określa kryteria wyboru dokumentów z kolekcji brak parametru <zapytanie> albo pusty dokument ({}) zwraca całą kolekcję, <projekcja> określa, które pola dokumentu mają być zwrócone, zwrócenie całej zawartości dokumentu poprzez opuszczenie parametru <projekcja>. MongoDB - pomoc do laboratorium 9/19 Pobieranie danych Pobieranie danych: wszystkie zapytania mają zasięg pojedynczej kolekcji, find() zwraca wyniki w postaci kursora - obiekt, po którym iterujemy zawierający dokumenty, find() w mongo shell automatycznie iteruje wyniki kursora wyświetlając po 20, polecenie it wyświetla kolejne 20 wyników. Pobieranie wszystkich dokumentów: db.restaurants.find() - pobiera listę wszystkich restauracji, db.restaurants.count() - zwraca liczbę dokumentów w kolekcji, db.restaurants.find().pretty() - lista restauracji, ładne formatowanie JSONa. MongoDB - pomoc do laboratorium 10/19 Parametr <projekcja> <projekcja> to dokument w postaci: { pole1: <boolean>, pole2: <boolean> ... } Z parametrem <projekcja> dokument zwracany przez find() zawiera: pola wyróżnione w projekcji oraz pole id, pole id można wykluczyć, domyślnie jest uwzględniane, wartość logiczna <boolean> może mieć wartość: 1 albo true dla uwzględnienia pola w metodzie find(), 0 albo false dla wykluczenia pola. projekcja zawiera albo tylko wykluczenia albo tylko uwzględnienia parametrów, jedynym wyjątkiem jest parametr id, przykłady dla kolekcji restaruracji: db.restaurants.find({},{nazwa:1}) - dokumenty z id i nazwą, db.restaurants.find({},{adres:0,oceny:0}) - wszystko poza adresem i ocenami db.restaurants.find({},{ id:0,adres:1}) - sam adres, bez pola id MongoDB - pomoc do laboratorium 11/19 Zapytania, warunki równościowe Dokumenty będące zapytaniem z warunkiem równościowym mają formę: { <pole1>: <wartosc1>, <pole2>: <wartosc2>, ... } dla pól najwyższego poziomu (bezpośrednio w dokumencie) nazwę pola można wziąść w cudzysłów albo go pominąć: db.restaurants.find( { dzielnica: "Manhattan"} ) db.restaurants.find( { "dzielnica": "Manhattan"} ) dla pól niższego poziomu (zagnieżdżonych w dokumencie) używamy notacji kropkowej, trzeba użyć cydzysłowu: db.restaurants.find( { "adres.kod": "10075"} ) analogicznie odwołujemy się do zagnieżdżonych tablic: db.restaurants.find( { "oceny.ocena": "B"} ) MongoDB - pomoc do laboratorium 12/19 Zapytania, określanie warunków z operatorami Zapytania z określeniem warunku generalnie mają formę: { <pole1>: { <operator1>: <wartosc1> } } Przykłady: restauracje - przynajmniej jedna z ocen większa niż 30: db.restaurants.find( { "oceny.punkty": { $gt: 30 } } ) restauracje - oceny nie zwierają kategorii ”B”: db.restaurants.find( { "oceny.ocena": { $ne: "B"} } ) MongoDB - pomoc do laboratorium 13/19 Zapytania, operatory porównania Operatory porównania: $eq - wartości równe podanej wartości, $gt - wartości większe niż podana wartość, $gte - wartości większe lub równe podanej wartości, $lt - wartości mniejsze niż podana wartość, $lte - wartości mniejsze lub równe podanej wartości, $ne - wartości różne od podanej, $in - dopasowuje dane zawierające którąkolwiek z wartości podanych w tablicy, np.: db.testowa.find( { tab:{ $in:[1,3] } } ) $nin - dopasowuje wszystkie dane nie zawierające wartości podanych w tablicy. MongoDB - pomoc do laboratorium 14/19 Zapytania, operatory logiczne Operatory logiczne: $or - łączy klauzule zapytania logicznym OR, zwraca dokumenty spełniające którąkolwiek z klauzul, $and - łączy klauzule zapytania logicznym AND, zwraca dokumenty, które spełniają wszystkie klauzule, $not - negacja logiczna, zwraca dokumenty, które nie spełniły warunków utworzonego zapytania, $nor - łączy klauzule zapytania logicznym NOR, zwraca dokumenty, które nie spełniły obu klauzul zapytania. MongoDB - pomoc do laboratorium 15/19 Zapytania, łączenie warunków, operator AND Zapytania z warunkiem łączonym AND, oddzielone przecinkiem: { <pole1>: <wartosc1>, <pole2>: <wartosc2>, ... } restauracje - ocena mniejsza niż 10 AND kod pocztowy równy 10462: db.restaurants.find({ "oceny.punkty":{ $lt:10 }, "adres.kod":"10462" }) Zapytania z warunkiem łączonym AND, operator $and, warunki w tablicy: { $and: [ {<pole1>: <wartosc1>}, {<pole2>: <wartosc2>}, ... ] } restauracje - ocena mniejsza niż 10 AND kod pocztowy równy 10462: db.restaurants.find({ $and:[ {"oceny.punkty":{$lt:10} }, {"adres.kod":"10462"} ] }) MongoDB - pomoc do laboratorium 16/19 Zapytania, łączenie warunków, operator OR Zapytania z warunkiem łączonym OR, operator $or, warunki w tablicy: { $or: [ {<pole1>: <wartosc1>}, {<pole2>: <wartosc2>}, ... ] } restauracje - ocena mniejsza niż 10 OR kod pocztowy równy 10462: db.restaurants.find( { $or:[ {"oceny.punkty": {$lt:10} }, {"adres.kod": "10462"} ] } ) MongoDB - pomoc do laboratorium 17/19 Zapytania, metody limit() i skip() cursor.limit() określa liczbę dokumentów zwracaną przez kursor, nie pobieramy więcej niż jesteśmy w stanie przetworzyć. Przykład - pobranie pierwszych 7 restauracji: db.restaurants.find().limit(7) cursor.skip() określa liczbę początkowych pominiętych dokumentów, można wykorzystać do tworzenia przeglądania danch stronami. Przykład - lista restauracji bez pierwszych 5: db.restaurants.find().skip(5) MongoDB - pomoc do laboratorium 18/19 Zapytania, sortowanie wyników Określenie kolejności danych wyjściowych - metoda sort(): db.kolekcja.find().sort( { kryterium1, kryterium2, ... } ) Do metody sort() przekazujemy dokument zawierający: pola, po których sortujemy, typ sortowania: 1 - porządek rosnący, -1 - porządek malejący. Przykład: restaruracje uporządkowane najpierw malejąco po nazwach dzielnic i następnie rosnąco po kodzie pocztowym: db.restaurants.find().sort( { "dzielnica": -1, "adres.kod": 1 } ) MongoDB - pomoc do laboratorium 19/19