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