Podstawowymi funkcjami służącymi do budowania zapytań są find i findOne. Pierwsza zwraca wszystkie dokumenty spełniające dany warunek, natomiast findOne zwraca tylko pierwszy dokument spełniający ten warunek. Jako argument przekazuje się obiekt JavaScript zgodny z językiem zapytań. Dokumentacja MongoDB mówi, że find jest odpowiednikiem instrukcji SELECT z SQL, natomiast obiekt przekazywany jako parametr odpowiada instrukcji WHERE.
Wybieranie bezwarunkowe:
Nie podając warunku jako argument dla obu funkcji wybieramy wszystkie dokumenty, bądź pierwszy zaindeksowany.
db.users.find(); db.users.findOne();
Przeszukiwanie warunkowe:
Tutaj mamy sporo możliwości. Możemy żądać by dane property miało dokładnie jakąś wartość:
db.users.find({lastname: "Doe"});
Przeszukiwanie warunkowe wykonuje się za pomocą operatorów $lt i $gt (względnie $lte czy $gte).
var query = {}; query.lastname = "Doe"; query.age = { $gt :20}; db.users.find(query);
Podanie dwóch warunków powoduje, że oba muszą być spełnione, aby dokument został zwrócony.
Dokumenty zagnieżdżone:
Przy przeszukiwaniu zagnieżdżonych dokumentów, stosuje się notację z kropkami, tak jakbyśmy odczytywali zagnieżdżone property w JavaScripcie:
var query = {}; query["address.country"] = "USA"; db.users.find(query);
Projekcje:
Drugim, opcjonalnym argumentem dla zapytań jest obiekt, w którym możemy zadecydować, które pola nas interesują. Domyślnie zwrócone zostaną wszystkie pola dokumentu. Jeżeli chcemy któreś konkretne pola, pomijając inne, oznaczamy te pożądane wartością 1. Przy oznaczeniu pierwszego pola przez 1 zostanie zwrócone ono, oraz pola _id nadawane przez bazę. Aby je wyłączyć, możemy ustawić tą wartość na 0. Zatem aby zwrócić dokumenty z samymi imionami wystarczy:
db.users.find(query, {firstname:1, _id: 0});
Paginacja:
Stronnicowanie może być wykonywane bezpośrednio na bazie danych przy użyciu operatorów limit i take.
db.users.find().limit(1).skip(1);
Sortowanie:
.
Podobnie jak paginacja wykonywane na wynikach jako kolejna funkcja w łańcuchu wywołań
db.users.find().sort({age: 1});
Wartość 1 oznacza sortowanie rosnąco, wartość -1 sortowanie malejąco.
Brak komentarzy:
Prześlij komentarz