11 zapytań i operacji MongoDB, które musisz znać

MongoDB to jedna z najbardziej pożądanych i podziwianych baz danych NoSQL do profesjonalnego rozwoju. Jego elastyczność, skalowalność i zdolność do obsługi dużych ilości danych sprawiają, że jest to najlepszy wybór dla nowoczesnych aplikacji. Jeśli chcesz opanować regularne zapytania i operacje MongoDB, jesteś we właściwym miejscu.

MUO WIDEO DNIA

PRZEWIŃ, ABY KONTYNUOWAĆ TREŚĆ

Niezależnie od tego, czy chcesz skutecznie wyszukiwać i przetwarzać dane, wdrażać solidne modele danych, czy też tworzyć responsywne aplikacje, dogłębne zrozumienie typowych zapytań i operacji MongoDB niewątpliwie poprawi Twoje umiejętności.

1. Utwórz lub przełącz bazy danych

Tworzenie bazy danych lokalnie za pomocą MongoDB Shell jest proste, zwłaszcza jeśli skonfigurowałeś zdalny klaster. Możesz utworzyć nową bazę danych w MongoDB za pomocą polecenia use:

 use db_name 

Chociaż powyższe polecenie tworzy nową bazę danych, możesz użyć go do przełączenia się do istniejącej bazy danych bez tworzenia nowej od podstaw.

2. Usuń bazę danych

Najpierw przełącz się do bazy danych, którą chcesz usunąć, używając polecenia use, tak jak poprzednio. Następnie upuść bazę danych za pomocą polecenia dropDatabase():

 use db_name
db.dropDatabase()

3. Utwórz kolekcję

Aby utworzyć kolekcję, przełącz się do docelowej bazy danych. Użyj słowa kluczowego createCollection(), aby utworzyć nową kolekcję MongoDB:

 db.createCollection("collection_name")

Zastąp nazwa_kolekcji wybraną nazwą kolekcji.

4. Wstaw dokument do kolekcji

Podczas wysyłania danych do kolekcji można wstawić pojedynczy dokument lub tablicę dokumentów.

Aby wstawić pojedynczy dokument:

 db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})

Możesz także użyć powyższej metody, aby wstawić tablicę dokumentów z jednym identyfikatorem:

 db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])

Aby wstawić wiele dokumentów jednocześnie, z których każdy ma osobne identyfikatory, użyj słowa kluczowego insertMany:

 db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])

5. Pobierz wszystkie dokumenty z kolekcji

Możesz przeszukać wszystkie dokumenty z kolekcji za pomocą słowa kluczowego find() :

 db.collection_name.find()

Powyższe zwraca wszystkie dokumenty w określonej kolekcji:

Możesz także ograniczyć zwracane dane do określonej liczby. Na przykład możesz użyć następującego polecenia, aby pobrać tylko dwa pierwsze dokumenty:

 db.collection_name.find().limit(2)

6. Filtruj dokumenty w kolekcji

Istnieje wiele sposobów filtrowania dokumentów w MongoDB. Rozważmy na przykład następujące dane:

Jeśli pytasz tylko o określone pole w dokumencie, użyj metody find:

 db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

Powyższe zwraca wszystkie dokumenty, w których wartością Likes jest Wordle. Wyświetla tylko nazwy i ignoruje identyfikator dokumentu.

Kolekcję można również filtrować według współczynnika liczbowego. Powiedzmy, że chcesz uzyskać nazwy wszystkich użytkowników starszych niż 21 lat, użyj operatora $gt:

 db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

Wyjście wygląda tak:

Spróbuj zamienić find na findOne, aby zobaczyć, co się stanie. Istnieje jednak wiele innych filtrujących słów kluczowych:

  • $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: użyj tego podczas wykonywania zapytań na podstawie tablicy. Pobiera wszystkie wartości pasujące do dowolnego elementu w tablicy. Słowo kluczowe $nin działa odwrotnie.

7. Sortuj zapytania

Sortowanie pomaga uporządkować zapytanie w określonej kolejności. Możesz sortować w kolejności malejącej lub rosnącej. Należy pamiętać, że sortowanie wymaga odniesienia numerycznego.

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, zastąp „1” przez „-1”.

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})

8. Zaktualizuj dokument

Aktualizacje MongoDB wymagają od operatorów atomowych określenia sposobu przeprowadzenia aktualizacji. Oto lista często używanych operatorów atomowych, które można sparować z zapytaniem o aktualizację:

  • $set: Dodaj nowe pole lub zmień istniejące pole.
  • $push: Wstaw nowy element do tablicy. Połącz go z operatorem $each, aby wstawić wiele elementów jednocześnie.
  • $pull: Usuń element z tablicy. Użyj go z $in, aby usunąć wiele elementów za jednym razem.
  • $unset: Usuń pole z dokumentu.

Aby zaktualizować dokument i dodać nowe pole, na przykład:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})

Powyższe aktualizuje określony dokument, jak pokazano:

Usunięcie pola e-mail jest proste dzięki operatorowi $unset:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})

Rozważ następujące przykładowe dane:

Możesz wstawić element do istniejącego pola tablicy elementów za pomocą operatora $push:

 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, operator $pull usuwa element z tablicy:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

Zaktualizowane dane wyglądają następująco:

Dołącz słowo kluczowe $in, aby usunąć wiele elementów z tablicy za jednym razem:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }}) 

9. Usuń dokument lub pole

Słowo kluczowe deleteOne lub deleteMany usuwa dokument z kolekcji. Użyj deleteOne, aby usunąć dokument na podstawie określonego pola:

 db.collection_name.deleteOne({"Name":"IDNoble"})

Jeśli chcesz usunąć wiele dokumentów ze wspólnymi kluczami, zamiast tego użyj deleteMany. Poniższe zapytanie usuwa wszystkie dokumenty zawierające Chess jako polubienia.

 db.collection.deleteMany({"Likes":"Chess"})

10. Operacja indeksowania

Indeksowanie poprawia wydajność zapytań, usprawniając liczbę dokumentów, które MongoDB musi przeskanować. Często najlepiej jest utworzyć indeks dla pól, które są częściej wyszukiwane.

Indeksowanie MongoDB jest podobne do używania indeksów do optymalizacji zapytań SQL. Na przykład, aby utworzyć indeks rosnący w polu Nazwa:

 db.collection.createIndex({"Name":1})

Aby wyświetlić listę indeksów:

 db.collection.getIndexes()

Powyższe to tylko wstęp. Istnieje kilka innych metod tworzenia indeksu 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óry wymaga napisania mapy i funkcji redukcji w oddzielnych funkcjach JavaScript, agregacja jest prosta i wykorzystuje tylko wbudowane metody MongoDB.

Rozważmy na przykład następujące dane dotyczące sprzedaży:

Korzystając z agregacji MongoDB, możesz obliczyć i przechowywać całkowitą liczbę sprzedanych produktów dla każdej kategorii w następujący sposób:

 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 oferuje wiele metod wykonywania zapytań, w tym funkcje poprawiające wydajność zapytań. Niezależnie od języka programowania, powyższe struktury zapytań są podstawowe do interakcji z bazą danych MongoDB.

Mogą jednak występować pewne rozbieżności w podstawowej składni. Na przykład, podczas gdy niektóre języki programowania, takie jak Python, rozpoznają przypadki węża, inne, w tym JavaScript, używają przypadku wielbłąda. Upewnij się, że badasz, co działa dla wybranej technologii.