| Autor | MongoDB Inc. |
|---|---|
| Pierwsze wydanie | 2009 |
| Aktualna wersja stabilna | 8.3.8 (11 sierpnia 2026) [±] |
| Język programowania | C++ |
| Platforma sprzętowa | wieloplatformowa |
| Rodzaj | nierelacyjna baza danych |
| Licencja | SSPL lub komercyjna |
| Strona internetowa | |

MongoDB (od ang. humongous – ogromny[1]) – nierelacyjny system zarządzania bazą danych napisany w języku C++. Charakteryzuje się brakiem ściśle zdefiniowanej struktury obsługiwanych baz danych. Zamiast tego dane składowane są jako dokumenty w stylu JSON.
Prace nad systemem rozpoczęła firma 10gen w 2007 roku. Pierwsza stabilna wersja ukazała się w lutym 2009[2].
Wewnętrznym językiem do definiowania zapytań oraz funkcji agregujących jest JavaScript wykonywany bezpośrednio przez serwer MongoDB.
Interfejsy programistyczne pozwalające obsługiwać bazy MongoDB powstały dla wielu wiodących języków programowania, w tym dla C, C++, Javy, PHP, Perla, Pythona i Rubiego. Wśród znanych użytkowników systemu występują:
Używając domyślnych ustawień, bazy MongoDB są publicznie dostępne bez hasła. Prowadzi to do problemów takich jak w styczniu 2017, kiedy dziesiątki tysięcy baz zostało wyczyszczonych, a ich właściciele otrzymali żądanie okupu w zamian za ich przywrócenie. Jednak nawet po opłaceniu okupu często dane nie wracały do właścicieli, gdyż natychmiast po ich przywróceniu baza była czyszczona przez kogoś innego[7][8].
Dużo krytyki spotyka MongoDB ze względu na problemy ze spójnością danych. MongoDB używa modelu asynchronicznych zapisów i eventual consistency, co oznacza że klient otrzymuje jedynie obietnicę, że dane zostaną zapisane w przyszłości. Samo w sobie nie stanowi to problemu, jednak przez błędy implementacyjne nawet dane przyjęte do zapisu mogły zostawać potem odrzucane[9]. Ten błąd został poprawiony w wersji 3.4.0[10]. Innym znanym problemem jest niezwracanie części dokumentów przy wyszukiwaniach z użyciem indeksu. Pomijane są wtedy dokumenty, które w momencie rozpoczęcia wyszukiwania były aktualizowane[11].
MongoDB wspiera jedynie w niewielkim stopniu kodowanie UTF-8, co stanowi poważny problem w przypadku przechowywania tekstu w języku innym niż angielski[12]. Do wersji 3.3.11 włącznie do sortowania łańcuchów używana była funkcja memcmp, która nie obsługuje poprawnie danych w UTF-8 w różnych ustawieniach regionalnych.