MongoDB jest jedną z najbardziej cenionych i popularnych baz danych NoSQL wśród profesjonalnych programistów. Jej wszechstronność, skalowalność i zdolność do zarządzania ogromnymi zbiorami danych czynią ją idealnym wyborem dla współczesnych aplikacji. Jeśli Twoim celem jest biegłe opanowanie zapytań i operacji MongoDB, to trafiłeś we właściwe miejsce.
MUO WIDEO DNIA
PRZEWIŃ, ABY ZOBACZYĆ DALSZĄ TREŚĆ
Niezależnie od tego, czy chcesz efektywnie wyszukiwać i przetwarzać dane, wdrażać przemyślane modele danych, czy tworzyć dynamiczne aplikacje, dogłębne poznanie typowych zapytań i operacji w MongoDB z pewnością podniesie Twoje umiejętności.
1. Tworzenie lub przełączanie baz danych
Lokalne utworzenie bazy danych za pomocą MongoDB Shell jest niezwykle proste, zwłaszcza gdy masz skonfigurowany zdalny klaster. Nową bazę danych w MongoDB możesz wygenerować za pomocą polecenia use
:
use nazwa_bazy_danych
Chociaż powyższe polecenie umożliwia utworzenie nowej bazy danych, możesz go również użyć do zmiany aktywnej bazy danych na inną, już istniejącą, bez konieczności tworzenia jej od początku.
2. Usuwanie bazy danych
Zacznij od przełączenia się na bazę danych, którą zamierzasz usunąć, używając polecenia use
, tak jak w poprzednim przypadku. Następnie usuń bazę danych, korzystając z polecenia dropDatabase()
:
use nazwa_bazy_danych
db.dropDatabase()
3. Tworzenie kolekcji
Aby utworzyć kolekcję, przejdź do wybranej bazy danych. Użyj polecenia createCollection()
, aby wygenerować nową kolekcję w MongoDB:
db.createCollection("nazwa_kolekcji")
W miejsce nazwa_kolekcji
wpisz preferowaną nazwę dla nowej kolekcji.
4. Wstawianie dokumentu do kolekcji
Podczas przesyłania danych do kolekcji możesz wstawić zarówno pojedynczy dokument, jak i całą tablicę dokumentów.
Aby wstawić jeden dokument:
db.nazwa_kolekcji.insertOne({"Imię":"Jan", "Zainteresowania":"Szachy"})
Możesz również użyć tej samej metody, aby wstawić tablicę dokumentów, przypisując im jeden wspólny identyfikator:
db.nazwa_kolekcji.insertOne([{"Imię":"Jan", "Zainteresowania":"Szachy"}, {"Język": "Mongo", "administrator": true}])
Aby umieścić w kolekcji wiele dokumentów naraz, gdzie każdy z nich ma oddzielny identyfikator, użyj słowa kluczowego insertMany
:
db.nazwa_kolekcji.insertMany([{"Imię":"Jan", "Zainteresowania":"Szachy"}, {"Imię": "Paweł", "Zainteresowania": "Wordle"}])
5. Pobieranie wszystkich dokumentów z kolekcji
Wszystkie dokumenty z danej kolekcji możesz przeszukać za pomocą słowa kluczowego find()
:
db.nazwa_kolekcji.find()
Powyższe polecenie zwraca wszystkie dokumenty znajdujące się w konkretnej kolekcji:
Możesz również ograniczyć ilość zwracanych danych do określonej liczby. Przykładowo, używając następującego polecenia, pobierzesz tylko dwa pierwsze dokumenty:
db.nazwa_kolekcji.find().limit(2)
6. Filtrowanie dokumentów w kolekcji
Istnieje wiele sposobów na filtrowanie dokumentów w MongoDB. Rozważmy na przykład poniższe dane:
Jeśli chcesz wyszukać dokumenty pasujące do konkretnego pola, użyj metody find
:
db.nazwa_kolekcji.find({"Zainteresowania":"Wordle"}, {"_id":0, "Imię":1})
Powyższe polecenie zwróci wszystkie dokumenty, w których pole „Zainteresowania” ma wartość „Wordle”. Wyświetli jedynie imiona i pominie identyfikator dokumentu.
Kolekcję możesz filtrować również na podstawie wartości numerycznej. Załóżmy, że chcesz znaleźć imiona wszystkich użytkowników, którzy mają więcej niż 21 lat, wykorzystaj do tego operator $gt
:
db.nazwa_kolekcji.find({"Zainteresowania":"Szachy", "Wiek":{"$gt":21}}, {"_id":0, "Imię":1})
Wynik takiego zapytania będzie wyglądał następująco:
Spróbuj zamienić find
na findOne
i zobacz, co się stanie. Pamiętaj, że istnieje znacznie więcej słów kluczowych do filtrowania:
-
$lt
: Wszystkie wartości mniejsze niż określona. -
$gte
: Wartości równe lub większe niż określona. -
$lte
: Wartości mniejsze lub równe zdefiniowanej. -
$eq
: Pobiera wszystkie wartości równe określonej. -
$ne
: Wszystkie wartości nie są równe podanej. -
$in
: Wykorzystaj go, przeszukując tablicę. Pobiera wszystkie wartości pasujące do dowolnego elementu w tablicy. Słowo kluczowe$nin
działa w przeciwnym kierunku.
7. Sortowanie wyników zapytań
Sortowanie pozwala uporządkować wyniki zapytania w ustalonej kolejności. Możesz sortować rosnąco lub malejąco. Należy mieć na uwadze, że sortowanie wymaga odniesienia do wartości numerycznej.
Przykładowo, aby posortować wyniki rosnąco:
db.nazwa_kolekcji.find({"Zainteresowania":"Szachy"}).sort({"Wiek":1})
Aby posortować to samo zapytanie malejąco, zastąp „1” wartością „-1”.
db.nazwa_kolekcji.find({"Zainteresowania":"Szachy"}).sort({"Wiek":-1})
8. Aktualizacja dokumentu
Aktualizacje w MongoDB wymagają od operatorów atomowych precyzowania, w jaki sposób aktualizacja ma być przeprowadzona. Poniżej znajduje się lista najczęściej stosowanych operatorów atomowych, które mogą zostać połączone z zapytaniem o aktualizację:
-
$set
: Dodaje nowe pole lub modyfikuje istniejące pole. -
$push
: Wstawia nowy element do tablicy. Połącz go z operatorem$each
, aby wstawić kilka elementów na raz. -
$pull
: Usuwa element z tablicy. Użyj go z$in
, aby usunąć kilka elementów jednocześnie. -
$unset
: Usuwa pole z dokumentu.
Aby zaktualizować dokument i dodać nowe pole, możesz skorzystać z następującego przykładu:
db.nazwa_kolekcji.updateOne({"Imię":"Sandra"}, {"$set":{"Imię":"Jakub", "email":"[email protected]"}})
Powyższe polecenie zaktualizuje konkretny dokument w przedstawiony sposób:
Usunięcie pola e-mail jest łatwe dzięki operatorowi $unset
:
db.nazwa_kolekcji.updateOne({"Imię":"Sandra"}, {"$unset":{"email":"[email protected]"}})
Rozważmy następujące przykładowe dane:
Możesz wstawić nowy element do istniejącego pola, które jest tablicą, używając operatora $push
:
db.nazwa_kolekcji.updateOne({"Imię":"Piotr"}, {"$push":{"przedmioty":"Banan"}})
Oto wynik:
Użyj operatora $each
, aby wstawić wiele elementów naraz:
db.nazwa_kolekcji.updateOne({"Imię":"Piotr"}, {"$push":{"przedmioty": {"$each":["Migdał", "Melon"]}}})
A oto rezultat:
Jak już wspomniano, operator $pull
usuwa element z tablicy:
db.nazwa_kolekcji.updateOne({"Imię":"Piotr"}, {"$pull":{"przedmioty":"Banan"}})
Zaktualizowane dane wyglądają następująco:
Dodaj słowo kluczowe $in
, aby usunąć kilka elementów z tablicy jednocześnie:
db.nazwa_kolekcji.updateOne({"Imię":"Piotr"}, {"$pull":{"przedmioty": {"$in":["Migdał", "Melon"]} }})
9. Usuwanie dokumentu lub pola
Słowo kluczowe deleteOne
lub deleteMany
służy do usunięcia dokumentu z kolekcji. Użyj deleteOne
, aby usunąć dokument pasujący do określonego pola:
db.nazwa_kolekcji.deleteOne({"Imię":"IdNoble"})
Jeśli chcesz usunąć kilka dokumentów, które mają wspólne klucze, użyj deleteMany
. Poniższe zapytanie usunie wszystkie dokumenty, w których pole „Zainteresowania” ma wartość „Szachy”.
db.nazwa_kolekcji.deleteMany({"Zainteresowania":"Szachy"})
10. Operacja indeksowania
Indeksowanie zwiększa wydajność zapytań, optymalizując ilość dokumentów, które MongoDB musi przeszukać. Najczęściej rekomenduje się utworzenie indeksu dla tych pól, które są najczęściej wyszukiwane.
Indeksowanie w MongoDB przypomina wykorzystanie indeksów do optymalizacji zapytań SQL. Przykładowo, aby utworzyć rosnący indeks na polu „Imię”:
db.nazwa_kolekcji.createIndex({"Imię":1})
Aby wyświetlić listę indeksów:
db.nazwa_kolekcji.getIndexes()
Powyższy przykład to jedynie wprowadzenie. Istnieje wiele innych sposobów tworzenia indeksów w MongoDB.
11. Agregacja
Potok agregacji, ulepszona wersja MapReduce, umożliwia uruchamianie i przechowywanie złożonych obliczeń z poziomu MongoDB. W przeciwieństwie do MapReduce, które wymaga pisania funkcji mapującej i redukującej w oddzielnych skryptach JavaScript, agregacja jest prostsza i wykorzystuje wyłącznie wbudowane metody MongoDB.
Rozważmy na przykład następujące dane dotyczące sprzedaży:
Wykorzystując agregację w MongoDB, możesz obliczyć i zapisać łączną liczbę sprzedanych produktów w każdej kategorii w następujący sposób:
db.sprzedaz.aggregate([{$group:{"_id":"$Dział", "razemSprzedano":{$sum:"$Sprzedano"}}}, {$project:{"_id":0, "razemSprzedano":1, "Dział":"$_id"}}])
Powyższe zapytanie zwróci następujące informacje:
Opanuj zapytania MongoDB
MongoDB udostępnia liczne metody wykonywania zapytań, w tym funkcje, które poprawiają ich wydajność. Niezależnie od języka programowania, powyższe konstrukcje zapytań stanowią fundament interakcji z bazą danych MongoDB.
Jednakże, mogą występować pewne rozbieżności w podstawowej składni. Na przykład, niektóre języki programowania, jak Python, używają konwencji zapisu snake_case, podczas gdy inne, w tym JavaScript, używają camelCase. Zawsze sprawdzaj, jakie rozwiązania są najlepsze dla Twojej wybranej technologii.
newsblog.pl