Projekcja w MongoDB [z przykładami]
Opublikowany: 2020-09-15MongoDB to jedna z najbardziej znanych współczesnych baz danych do obsługi i zarządzania dużymi danymi. Jest to zorientowana na dokumenty baza danych NoSQL, która używa dokumentów podobnych do JSON, aby ułatwić zarządzanie danymi.
Różne pomysły na projekty MongoDB można łatwo wprowadzić w życie. Jednak MongoDB ma również kilka wad. Domyślnie każde zapytanie o konkretny dokument pokaże wszystkie dane – ten problem jest rozwiązywany za pomocą projekcji MongoDB .
Spis treści
Co to jest projekcja w MongoDB?
Projekcja w MongoDB ogranicza wyprowadzanie danych do określonych pól, zamiast pokazywać je wszystkie. Odbywa się to za pomocą metody find(). Metoda find() akceptuje opcjonalny parametr, który pozwala nam uwzględnić lub wykluczyć określone pola wyjściowe. Zagłębmy się w to, jak używać projekcji w MongoDB .
Składnia metody Find()
Projekcja w MongoDB odbywa się za pomocą metody find(), której składnia to:
db. nazwa_kolekcji .find({}, { field_Key:1 lub 0 })
W powyższej składni nazwa_kolekcji to dokument, z którego musimy pobrać dane. Następnie w metodzie find() znajdują się dwa parametry — pierwszy przyjmuje zapytanie, a drugi służy do projekcji. Field_Key w składni to nazwa pola, które chcemy uwzględnić lub wykluczyć.

Musimy przekazać wartość logiczną dla każdego field_ Key . Ta wartość określa, czy chcemy uwzględnić pole, czy je wykluczyć. Jeśli wprowadzimy 1 przy polu, zostanie ono pokazane w wynikach, a jeśli uwzględnimy 0, zostanie ukryte.
Przykładowa baza danych
Utwórzmy przykładowy dokument w bazie danych, abyśmy mogli odwoływać się do niego w tym artykule.
db.example.studentData([
{_id: ObjectId(„59kf63795bc1d”), nazwa_ucznia: „Alexander”, id_ucznia: 01, status_ucznia: „A”, wiek_ucznia: 22}
{_id: ObjectId(„59ke62794bc1d”), nazwa_ucznia: „Steve”, identyfikator_ucznia: 02, status_ucznia: „A”, wiek_ucznia: 23}
{_id: ObjectId(„59kg73795bf1e”), nazwa_ucznia: „Łukasz”, id_ucznia: 03, status_ucznia: „A”, wiek_ucznia: 21}
{_id: ObjectId(„59kb69995ah1d”), nazwa_ucznia: „Bravo”, identyfikator_ucznia: 04, status_ucznia: „B”, wiek_ucznia: 25}
])
To jest nasz dokument bazy danych o nazwie example, którego będziemy używać jako odniesienia we wszystkich naszych przykładach.
Pobieranie danych z projekcją i bez projekcji w MongoDB
1. Składnia pobierania bez projekcji
Pobieranie wszystkich pól (jako nieużywanie projekcji) uczniów ze statusem student: „A.”
db.example.find({status_studenta: “A”})
Odpowiada to Select * z przykładu WHERE student_status = „A” zapytanie w SQL. Pobieranie danych bez projekcji w MongoDB da następujący wynik:
{"_id": ObjectId("59kf63795bc1d"), "nazwa_studenta": "Alexander", "id_studenta": 01, "status_studenta": "A", wiek_studenta: 22}
{"_id": ObjectId("59ke62794bc1d"), "nazwa_studenta": "Steve", "identyfikator_studenta": 02, "status_studenta": "A", "wiek_studenta": 23}
{"_id": ObjectId("59kg73795bf1e"), "nazwa_studenta": "Łukasz", "id_studenta": 03, "status_studenta": "A", wiek_studenta: 21}
Domyślnie wyświetla wszystkie pola danych, w których status_ucznia = „A”. Aby ograniczyć pola wyjściowe, możemy użyć projekcji w MongoDB .
2. Składnia pobierania z projekcją
Pobieranie nazwy studenta i statusu studenta wszystkich studentów.
db.example.find({}, {student_name: 1, student_status: 1})
To pokaże następujący wynik:

{"_id": ObjectId("59kf63795bc1d"), "nazwa_studenta": "Alexander", "status_studenta": "A"}
{„_id”: ObjectId(„59ke62794bc1d”), „nazwa_studenta”: „Steve”, „status_studenta”: „A”}
{"_id": ObjectId("59kg73795bf1e"), "student_name": "Łukasz", "student_status": "A"}
{„_id”: ObjectId(„59kb69995ah1d”), nazwa_ucznia: „Bravo”, status_ucznia: „B”}
_id jest wyświetlany domyślnie podczas korzystania z projekcji w MongoDB , chyba że go pominiemy.
Pomijanie _id podczas korzystania z projekcji w MongoDB
Pomijanie domyślnego identyfikatora i wyświetlanie identyfikatora studenta, nazwy studenta i statusu studenta wszystkich uczniów.
db.example.find({}, {_id: 0, id_studenta: 1, nazwa_studenta: 1, status_studenta: 1})
Da to następujący wynik:
{"identyfikator_studenta": 01, "imię_studenta": "Alexander", "status_studenta": "A"}
{„identyfikator_ucznia”: 02, „nazwisko_studenta”: „Steve”, „status_studenta”: „A”}
{"identyfikator_studenta": 03, "imię_studenta": "Łukasz", "status_studenta": "A"}
{"identyfikator_studenta": 04, "imię_studenta": "Brawo", status_studenta: "B"}
3. Łączenie włączenia i wykluczenia
Z wyłączeniem _id i student_id, w tym nazwa_ucznia i status_ucznia wszystkich uczniów.
db.example.find({}, {_id: 0, id_studenta: 0, nazwa_studenta: 1, status_studenta: 1})
Da to następujący wynik:
Błąd: błąd: {
„waitedMS” : NumberLong(0),
„ok” : 0,
„errmsg” : „Projekcja nie może łączyć włączenia i wykluczenia.”,
„kod” : 2
}
Połączenie włączenia i wykluczenia podczas korzystania z projekcji MongoDB spowoduje błąd, ponieważ nie możemy wykonać obu w tym samym zapytaniu. Pole _id jest wyjątkiem od tej reguły.
Można zauważyć, że w poprzednim przykładzie użyliśmy kombinacji włączania i wykluczania, w którym pominęliśmy _id i pokazaliśmy kilka innych pól, i działało to dobrze. Ze względu na wyjątek od reguły wykluczyliśmy _id i uwzględniliśmy resztę pól.
4. Określanie projekcji w MongoDB przez wykluczenie
Z wyłączeniem _id i student_status wszystkich uczniów i pokazanie pozostałych pól.
db.example.find({}, {_id: 0, status_studenta: 0})
{„nazwisko_studenta”: „Alexander”, „identyfikator_ucznia”: 01, „wiek_ucznia”: 22}
{„nazwisko_studenta”: „Steve”, „identyfikator_ucznia”: 02, „wiek_ucznia”: 23}
{"imię_studenta": "Łukasz", "id_studenta": 03, "wiek_studenta": 21}
{„nazwisko_studenta”: „Bravo”, „identyfikator_studenta”: 04, „wiek_ucznia”: 25}
Możesz również użyć czterech operatorów projekcji, aby ograniczyć pola wyjściowe, ale nie są one obsługiwane przez metodę find(). Operatory projekcji, których można użyć, to $, $elemMatch, $slice i $meta.

Przeczytaj także: Przypadki użycia MongoDB w świecie rzeczywistym
Wniosek
Dzięki wykorzystaniu projekcji w MongoDB możemy przejąć kontrolę nad wyświetlaniem danych w interfejsie, co zwiększa jego rzeczywiste przypadki użycia . MongoDB osiągnęła kilka kamieni milowych w ostatnich latach. To sprawiło, że przyszły zakres MongoDB jest jasny, a wiele firm poszukuje programistów z pełnym stosem ze znajomością MongoDB.
Teraz jest zatem świetny czas, aby włączyć umiejętności MongoDB do swojego CV. Ale w dzisiejszym konkurencyjnym świecie samo zarządzanie bazą danych nie wystarczy. Dlatego pomocne byłoby, gdybyś chciał zostać pełnoprawnym programistą lub nauczyć się analityki biznesowej, aby zrozumieć i przeanalizować dane, którymi zarządzasz, i pomóc firmom dobrze funkcjonować. upGrad może pomóc Ci zacząć.
W upGrad zapewniamy szczegółowe źródła nauki wraz z praktycznym doświadczeniem i pomocą w pracy. Współpracowaliśmy z wieloma instytutami, aby zapewnić Ci najlepszą edukację i certyfikację. Możesz wybrać, czy chcesz zapisać się na kurs certyfikacyjny Business Analytics, czy też wziąć udział w kursie Full-stack Software Development PG Diploma . Niezależnie od tego, co chcesz realizować jako karierę w swoim życiu, zapewniamy Ci ochronę.
Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
