11 zapytań i operacji MongoDB, które musisz znać
MongoDB zyskał znaczną popularność wśród programistów ze względu na swoje wyjątkowe możliwości, takie jak wszechstronność, skalowalność i wydajne zarządzanie ogromną ilością danych. Jako idealna opcja dla współczesnych aplikacji, MongoDB oferuje użytkownikom możliwość zwiększenia ich biegłości w zakresie standardowych zapytań i procedur operacyjnych.
Posiadając zawiłe zrozumienie powszechnych zapytań i procedur MongoDB, można skutecznie wydobywać i zmieniać informacje, jednocześnie konstruując solidne struktury danych i programy reagujące na użytkownika, podnosząc w ten sposób ich poziom biegłości.
Utwórz lub przełącz bazy danych
Tworzenie lokalnej bazy danych przy użyciu powłoki MongoDB jest procesem nieskomplikowanym, szczególnie w przypadku ustanowienia zdalnego klastra. Aby wygenerować nową bazę danych w MongoDB, użyj następującego polecenia:
use db_name
O ile wykonanie wspomnianej wcześniej komendy z powodzeniem ustanawia nową bazę danych, dopuszczalne jest również wykorzystanie jej do przejścia do już istniejącej bazy danych bez podejmowania procesu tworzenia de novo.
Usuń bazę danych
Aby rozpocząć, użyj polecenia use
, tak jak zrobiliśmy to wcześniej, aby połączyć się z żądaną bazą danych, którą należy usunąć. Następnie użyj funkcji dropDatabase()
, aby całkowicie usunąć bazę danych z systemu.
use db_name
db.dropDatabase()
Utwórz kolekcję
Aby utworzyć kolekcję w docelowej bazie danych, użyj metody createCollection()
w swoim środowisku MongoDB:
db.createCollection("collection_name")
Zastąp nazwa_kolekcji wybraną nazwą kolekcji.
Wstaw dokument do kolekcji
Podczas przesyłania informacji do repozytorium możliwe jest przesłanie albo pojedynczego rekordu, albo zbioru rekordów jako całości.
Aby wstawić pojedynczy dokument:
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
Wspomniane podejście można wykorzystać do włączenia szeregu dokumentów zawierających pojedynczy unikalny identyfikator:
db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])
Aby dodać jednocześnie wiele dokumentów z unikalnymi identyfikatorami, użyj metody „insertMany”:
db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])
Pobierz wszystkie dokumenty z kolekcji
Aby wyszukać wszystkie dokumenty w określonym zbiorze, można zastosować metodę find()
wykorzystującą odpowiednie słowo kluczowe bazy danych.
db.collection_name.find()
Wspomniana metoda pobiera każdy dokument znajdujący się w wyznaczonym zbiorze.
Możesz także ograniczyć pobierane informacje do określonej ilości. Jako przykład rozważmy następującą instrukcję, aby uzyskać tylko dwa początkowe rekordy:
db.collection_name.find().limit(2)
Filtruj dokumenty w kolekcji
Rozważmy zbiór danych jako ilustrację, w którym istnieje wiele metod filtrowania w dziedzinie MongoDB.
Korzystaj z metody „znajdź” podczas wyszukiwania informacji z pojedynczego pola w dokumencie.
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
Wspomniane zapytanie pobiera wszystkie dokumenty, w których pojawia się termin „Lubię to”, pomijając identyfikator konkretnego dokumentu i skupiając się wyłącznie na nazwie dokumentu.
W celu pobrania listy nazw użytkowników, które mają więcej niż 21 lat, można wykorzystać operator większy niż oznaczony jako „$gt”.
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
Wyjście wygląda tak:
Po zastąpieniu „find” przez „findOne” rozsądnie jest obserwować wszelkie zmiany w funkcjonalności. Należy zauważyć, że w systemie istnieje wiele dodatkowych słów kluczowych filtrujących.
Symbol „$lt” reprezentuje wyrażenie logiczne, którego wynikiem jest prawda dla wszystkich wartości mniejszych niż określona wartość, podczas gdy w przeciwnym razie jest to fałsz.
Symbol „$gte” reprezentuje operator logiczny używany w zapytaniach i wyrażeniach, który wskazuje, że wartość musi być równa lub większa od określonej wartości. Można go przedstawić jako „większy lub równy” w prostym języku angielskim.
Symbol „$ lte” reprezentuje wyrażenie logiczne, które ocenia, czy dana wartość jest mniejsza lub równa innej określonej wartości, dając w rezultacie prawdę, jeśli warunek jest spełniony, i fałsz w przeciwnym razie.
Funkcja =
pobiera wszystkie elementy w danym zestawie, które są równe określonej wartości.
Zbiór wszystkich elementów, które nie posiadają wyznaczonej wartości, jest oznaczony jako „$ne”.
Operatora „$in” można użyć podczas wyszukiwania danych na podstawie tablicy, pobierając wszystkie elementy, które odpowiadają dowolnemu elementowi w określonej tablicy. I odwrotnie, operator „$not in ($)” (lub „$nin”) służy do zwracania wyników dla elementów, które nie pasują do żadnej wartości w podanej tablicy.
Sortuj zapytania
Sortowanie to proces porządkowania danych w z góry określonej kolejności, w kolejności malejącej lub rosnącej, w oparciu o określone kryterium. Należy zauważyć, że sortowanie wymaga wykorzystania wymiernej miary do prawidłowego wykonania.
Na przykład, aby posortować w porządku rosnącym:
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
Aby uporządkować powyższe zapytanie w kolejności malejącej, w miejsce „1” wstaw „-1”.
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
Zaktualizuj dokument
MongoDB wykorzystuje operatory atomowe w połączeniu z zapytaniami aktualizującymi w celu określenia pożądanego wyniku modyfikacji danych. Poniżej zebraliśmy wybór często używanych w tym celu operatorów atomowych:
Rzeczywiście wydaje się, że istnieje pewna niespójność terminologiczna między dwoma podanymi fragmentami tekstu. W pierwszej sekcji termin „Zestaw” jest używany w odniesieniu do grupowania pól w formularzu, podczas gdy w drugiej sekcji termin „Zestaw pól” jest używany do konkretnego określenia zestawu pól o wspólnym przeznaczeniu. Pomocne może być ujednolicenie języka używanego w obu sekcjach w celu zapewnienia przejrzystości i spójności.
Polecenie $push
służy do dodawania nowego elementu do tablicy i może być połączone z operatorem $each
w celu jednoczesnego wstawiania wielu elementów.
Funkcja $pull
to polecenie, które usuwa element lub elementy z tablicy na podstawie określonej wartości klucza. Można go używać w połączeniu z operatorem $in
, aby wydajnie usuwać wiele elementów jednocześnie, określając tablicę wartości dla parametru values
.
Polecenie $unset
w MongoDB służy do usuwania określonego pola lub pól z istniejącego dokumentu. Tę operację można wykonać na dowolnej kolekcji i zaktualizuje ona wszystkie dokumenty w tej kolekcji, usuwając określone pole. Składnia metody unset
obejmuje określenie nazwy pola, które ma zostać usunięte, jak również opcji modyfikacji zapytania, jeśli to konieczne.
Aby zrewidować istniejący dokument, jednocześnie wprowadzając nowy element, rozważ następujące kroki: 1. Uzyskaj dostęp do dokumentu, który chcesz zmodyfikować i wprowadź żądane zmiany w jego treści lub formacie. Może to obejmować poprawianie błędów, aktualizowanie nieaktualnych informacji lub dodawanie nowych szczegółów.2. Określ, które konkretne zmiany są konieczne w oparciu o Twoje cele i zadania. Na przykład, jeśli chcesz umieścić w dokumencie dodatkowe pola danych, zdecyduj, jakiego rodzaju informacje mają zawierać te pola i jak będą one zorganizowane w ramach ogólnej struktury dokumentu.3. Implementuj zmiany dokonując odpowiednich modyfikacji bezpośrednio w samym dokumencie. W zależności od charakteru aktualizacji może to obejmować edycję tekstu, dostosowanie formatowania lub dodanie nowych sekcji.4. Przejrzyj dokładnie poprawiony dokument, aby się upewnić
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})
Powyższe modyfikacje zmieniają wskazany tekst w sposób przedstawiony poniżej:
Proces eliminowania pola e-mail można bez wysiłku przeprowadzić za pomocą operatora $unset
, który służy jako potężne narzędzie do wydajnego usuwania niechcianych elementów z tablic i obiektów w PHP. Operacja ta polega po prostu na określeniu żądanego elementu do usunięcia, po którym następuje słowo kluczowe $unset
, umożliwiając programistom efektywne zarządzanie strukturami danych przy jednoczesnym zachowaniu przejrzystości i precyzji kodu.
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})
Rozważ następujące przykładowe dane:
Można powiększać zawartość obecnych elementów w tablicy items stosując operator $push, który pozwala na wprowadzanie nowych wpisów do tego nagromadzenia punktów danych.
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
Oto dane wyjściowe:
Użyj operatora $each
, aby wstawić wiele elementów jednocześnie:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})
Oto dane wyjściowe:
Jak wspomniano wcześniej, użycie operatora $pull
skutkuje usunięciem określonego elementu lub pary klucz-wartość z tablicy.
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
Zaktualizowane dane wyglądają następująco:
Aby skutecznie wyeliminować wiele elementów z danej tablicy, użyj funkcji „include\_array” i przekaż jej żądaną tablicę wraz z określonymi kluczami lub zakresem indeksów, który chcesz wykluczyć. Korzystając z funkcji „include\_array” z operatorem „$in”, możesz skutecznie odfiltrować wiele niepożądanych elementów jednocześnie, bez usuwania ich pojedynczo.
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})
Usuń dokument lub pole
Słowa kluczowe „deleteOne” lub „deleteMany” służą do eliminowania dokumentów ze zbioru bazy danych. Podczas korzystania z tych poleceń kluczowe jest określenie konkretnego pola, na którym będzie oparte usunięcie. Pozwala to na ukierunkowane usuwanie określonych rekordów przy jednoczesnym zachowaniu innych, które mogą mieć różne wartości dla wyznaczonego pola.
db.collection_name.deleteOne({"Name":"IDNoble"})
Aby skutecznie usunąć wiele dokumentów, które mają identyczne klucze, zaleca się użycie metody „deleteMany” zamiast próby wykonania dostarczonego zapytania. To konkretne zapytanie usunie wszystkie wpisy w bazie danych, których treść zawiera „Szachy” jako jedną z wymienionych preferencji.
db.collection.deleteMany({"Likes":"Chess"})
Operacja indeksowania
Indeksowanie to technika, która zwiększa wydajność zapytań do bazy danych, zmniejszając ilość danych, które muszą zostać zbadane. Optymalizację tę można osiągnąć poprzez utworzenie indeksów dla często używanych pól w bazie danych, co ostatecznie prowadzi do poprawy wydajności zapytań.
W podobnym duchu MongoDB stosuje techniki indeksowania, które odzwierciedlają te stosowane w optymalizacji zapytań SQL poprzez implementację indeksów w określonych polach. Jako ilustrację rozważ utworzenie indeksu rosnącego w polu „Nazwa”.
db.collection.createIndex({"Name":1})
Aby wyświetlić listę indeksów:
db.collection.getIndexes()
Oprócz wcześniej wspomnianej metody istnieją różne alternatywne podejścia do generowania indeksu w kontekście systemu bazodanowego MongoDB.
Agregacja
Agregation Pipeline, udoskonalona iteracja MapReduce, ułatwia wykonywanie i zachowywanie skomplikowanych obliczeń w dziedzinie MongoDB. W przeciwieństwie do MapReduce, który wymaga tworzenia osobnych funkcji JavaScript dla procesów mapowania i redukcji, Agregation oferuje bezproblemową obsługę dzięki wykorzystaniu wyłącznie wbudowanych procedur MongoDB.
Rozważmy na przykład następujące dane dotyczące sprzedaży:
Ramy agregacji MongoDB umożliwiają obliczenie i zachowanie zagregowanej wartości sprzedaży dla każdej klasyfikacji produktów poprzez wdrożenie następujących kroków:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
Powyższe zapytanie zwraca następujące informacje:
Opanuj zapytania MongoDB
MongoDB zapewnia różne techniki wysyłania zapytań do danych, które mogą zwiększyć wydajność zapytań. Opisane powyżej podstawowe struktury zapytań obsługują różne języki programowania i służą jako punkt dostępu do baz danych MongoDB.
Pomimo potencjalnych różnic w podstawowej składni, niektóre języki programowania uznają różne style wielkości liter. Dla przykładu, Python obsługuje formatowanie węży, podczas gdy JavaScript stosuje konwencje wielbłądów. Kluczowe znaczenie ma zbadanie i zrozumienie wymagań preferowanej platformy technologicznej przed wdrożeniem konwencji nazewnictwa.