MongoDB to najpopularniejsza baza dokumentowa z rodziny NoSQL. Zamiast wierszy i kolumn jak w klasycznej bazie relacyjnej, trzyma dane w postaci dokumentów wyglądających jak JSON, a pod spodem zapisuje je w formacie BSON (Binary JSON) — binarnej odmianie JSON-a, która dokłada typy danych, których czysty tekst nie ma, na przykład Date, ObjectId czy liczby 64-bitowe. Dokumenty grupujesz w kolekcje, a kolekcje żyją w bazie. Jeśli znasz tabele i wiersze z SQL-a: kolekcja to mniej więcej tabela, a dokument to wiersz, tyle że każdy wiersz może mieć inny zestaw pól.
Jak to działa i do czego się przydaje
Największy haczyk (w dobrym sensie) to elastyczny schemat. Nie musisz z góry deklarować struktury — jeden dokument może mieć pole telefon, a sąsiedni nie. To wygodne przy szybkim prototypowaniu i przy danych, które naturalnie mają zagnieżdżenia (zamówienie z listą pozycji, profil użytkownika z adresami). Zamiast rozbijać to na pięć tabel i sklejać JOIN-ami, trzymasz wszystko w jednym dokumencie i czytasz jednym zapytaniem.
MongoDB dobrze skaluje się w poziomie przez sharding (rozrzucanie danych na wiele serwerów) i zapewnia wysoką dostępność przez replica sets (kopie tych samych danych z automatycznym przełączaniem przy awarii). Dlatego często ląduje pod aplikacjami webowymi, mobilnymi, systemami z dużą ilością zdarzeń czy katalogami produktów.
Przykład z praktyki
Łączysz się przez powłokę mongosh. Dodanie i odczyt dokumentu wygląda tak:
db.users.insertOne({ name: "Ania", tags: ["js", "node"], active: true })db.users.find({ tags: "node" })
Z poziomu kodu zwykle używasz oficjalnego sterownika (np. mongodb dla Node.js) albo warstwy ODM jak Mongoose, która dokłada walidację i schematy w aplikacji. Do nauki i prototypów świetnie nadaje się darmowy klaster MongoDB Atlas w chmurze — nie musisz nic instalować lokalnie. Aktualna gałąź to MongoDB 8.x.
Częste błędy i mity
Mit pierwszy: „MongoDB nie ma schematu, więc nie trzeba projektować danych”. Trzeba — tylko projektowanie przenosi się z bazy do Twojej głowy i kodu. Bałagan w dokumentach to klasyk juniora.
Mit drugi: „NoSQL nie ma transakcji”. Ma — od wersji 4.0 działają transakcje wielodokumentowe, choć jeśli ich potrzebujesz na każdym kroku, może baza relacyjna pasuje lepiej. Uważaj też na brak indeksów: zapytanie bez indeksu skanuje całą kolekcję i potrafi położyć wydajność. Sprawdzaj plan przez explain().
Pojęcia powiązane: NoSQL, BSON, JSON, dokument i kolekcja, sharding, replica set, indeks, agregacja (aggregation pipeline), Mongoose, baza relacyjna (SQL).