Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

MongoDB

Baza pytań rekrutacyjnych i wiedzy. Filtruj, szukaj i sprawdzaj swoją wiedzę.

Tematy

Czym jest dokument w MongoDB i jak modeluje się dane?

easydocumentbsonmodeling+1
Otwórz pytanie

Odpowiedź

Dokument to rekord w formacie podobnym do JSON (BSON) z parami klucz‑wartość, który może zawierać obiekty zagnieżdżone i tablice. Kolekcje przechowują dokumenty, a schemat jest elastyczny. Modelowanie danych polega głównie na osadzaniu (embedding) lub referencjonowaniu (referencing) w zależności od wzorców dostępu.

Wyjaśnij indeksowanie w MongoDB.

mediumindexcompound-indexperformance+1
Otwórz pytanie

Odpowiedź

Indeksy w MongoDB przechowują uporządkowane klucze, aby baza mogła szybko znaleźć pasujące dokumenty bez pełnego skanu kolekcji. Są indeksy jedno‑ i wielopolowe, multikey, tekstowe oraz geospatial. Indeksy przyspieszają odczyt, ale kosztują miejsce/pamięć i spowalniają zapisy.

Osadzanie vs referencje w projektowaniu schematu MongoDB?

mediumembeddingreferencingschema-design+1
Otwórz pytanie

Odpowiedź

Embedding zapisuje powiązane dane wewnątrz jednego dokumentu, co daje szybkie odczyty i atomowe aktualizacje, ale grozi dużymi dokumentami i duplikacją. Referencing przechowuje identyfikatory do innych dokumentów/kolekcji, zmniejsza duplikację i wspiera duże relacje, ale wymaga dodatkowych zapytań lub $lookup.

Jak działa pipeline agregacji w MongoDB?

hardaggregationpipelinemongodb
Otwórz pytanie

Odpowiedź

Pipeline agregacji przetwarza dokumenty przez uporządkowane etapy takie jak $match, $group, $project czy $sort. Każdy etap transformuje strumień i przekazuje wynik do następnego, umożliwiając złożone analizy podobne do SQL.

Replica set vs sharding w MongoDB?

hardreplicationshardingscalability+1
Otwórz pytanie

Odpowiedź

Replica set zapewnia wysoką dostępność: jedna instancja primary replikuje dane do secondary z automatycznym failoverem. Sharding daje skalowanie horyzontalne: dane są dzielone na shard’y według klucza shardowania i routowane przez mongos. Często stosuje się oba naraz.

Podstawy MongoDB: co to jest dokument i kolekcja?

easymongodbdocumentcollection+1
Otwórz pytanie

Odpowiedź

Dokument to rekord w formacie podobnym do JSON (BSON) z polami; kolekcja to zbiór dokumentów (jak tabela, ale schemat jest elastyczny). Dokumenty zwykle mają `_id` jako główny identyfikator.

Embedding vs referencing w MongoDB — kiedy embedować?

easymodelingembeddingreferencing
Otwórz pytanie

Odpowiedź

Embeduj, gdy dane należą do rodzica i zwykle są czytane razem (jedno zapytanie, atomowa aktualizacja w jednym dokumencie). Referencje dawaj, gdy dane są duże, współdzielone lub rosną bez ograniczeń.

Co to jest ObjectId w MongoDB?

easyobjectididmongodb
Otwórz pytanie

Odpowiedź

ObjectId to 12-bajtowy identyfikator często używany jako `_id`. Zawiera timestamp i inne informacje zapewniające unikalność; nie jest idealnie sekwencyjny, ale zwykle jest „mniej więcej” uporządkowany czasowo.

Kolejność compound index — co oznacza „prefix rule”?

mediumindexcompound-indexperformance
Otwórz pytanie

Odpowiedź

Dla indeksu `{a: 1, b: 1, c: 1}` zapytania mogą efektywnie używać lewego prefiksu: (a), (a,b), (a,b,c). Jeśli pomijasz `a`, indeks jest dużo mniej przydatny dla takiego zapytania.

Aggregation pipeline — co to jest i do czego służy?

mediumaggregationpipelinegroup
Otwórz pytanie

Odpowiedź

To sekwencja etapów (`$match`, `$group`, `$project`, ...), która przetwarza dokumenty i liczy agregaty. Używa się do raportów, grupowania, filtrowania i kształtowania danych po stronie serwera.

Co to jest TTL index w MongoDB?

mediumttlindexretention
Otwórz pytanie

Odpowiedź

TTL index automatycznie usuwa dokumenty po czasie na podstawie pola daty (albo stałego czasu wygaśnięcia). Przydaje się do sesji, tokenów, danych tymczasowych i logów z retencją.

Replica set — co dzieje się podczas election i czemu ważne są read/write concerns?

hardreplica-setconsistencyelection
Otwórz pytanie

Odpowiedź

W replica secie wybierany jest nowy primary, gdy obecny padnie. Write concern określa, kiedy zapis uznajesz za potwierdzony (np. majority), a read concern — jakiej spójności wymagasz przy odczycie. To kompromis między spójnością, opóźnieniem i dostępnością.

Sharding — jaki shard key jest dobry (i jaka jest typowa zła opcja)?

hardshardingshard-keyscaling
Otwórz pytanie

Odpowiedź

Dobry shard key ma wysoką kardynalność i dobre rozłożenie oraz pasuje do typowych zapytań. Typowo zły wybór to klucz rosnący monotonnie (np. timestamp), który robi hotspoty na jednym shardzie.

Transakcje w MongoDB — kiedy są przydatne i jaki jest koszt?

hardtransactionsmongodbperformance
Otwórz pytanie

Odpowiedź

Są przydatne, gdy potrzebujesz atomowych zmian na wielu dokumentach/kolekcjach. Koszt to większy narzut i mniejsza wydajność niż operacje single-document; jeśli się da, modeluj dane tak, by unikać multi-doc transakcji.

Paginacja przy dużych danych — czemu `skip/limit` może być wolne i jaki jest lepszy wzorzec?

hardpaginationskip-limitperformance
Otwórz pytanie

Odpowiedź

`skip` musi „przejść” przez wiele dokumentów, więc dalekie strony są coraz wolniejsze. Lepszy wzorzec to paginacja range/seek (np. po `_id` albo indeksowanym createdAt) używając „większe niż ostatnie” + sortowanie.

W update’ach MongoDB, co robi `$set`?

easymongodbupdateset
Otwórz pytanie

Odpowiedź

`$set` ustawia wartość pola (i tworzy je, jeśli nie istnieje). Aktualizuje tylko wybrane pola, zamiast podmieniać cały dokument.

Co to jest projection w MongoDB i po co jej używać?

mediumprojectionfindperformance
Otwórz pytanie

Odpowiedź

Projection to wybór tylko części pól do zwrócenia (include/exclude). Zmniejsza payload, poprawia wydajność i ogranicza przypadkowe ujawnianie danych.

Co oznacza `upsert: true` w update’ach MongoDB?

mediumupsertupdatemongodb
Otwórz pytanie

Odpowiedź

Upsert oznacza „update albo insert”: jeśli żaden dokument nie pasuje do filtra, MongoDB wstawi nowy dokument (na podstawie update) zamiast aktualizować.

Czemu nieograniczone tablice w dokumentach MongoDB są niebezpieczne?

hardarraysschema-designlimits+1
Otwórz pytanie

Odpowiedź

Dokumenty mają limit rozmiaru (16MB), a duże tablice powodują puchnięcie dokumentu, większy IO i wolniejsze update’y. Mogą też tworzyć hot documents i contention; lepiej wydzielić kolekcję albo stosować bucketing dla nieograniczonych list.

Co to są Change Streams w MongoDB i czego wymagają?

hardchange-streamsoplogreplica-set+1
Otwórz pytanie

Odpowiedź

Change Streams pozwalają subskrybować zmiany w czasie rzeczywistym (insert/update/delete) w kolekcji/bazie. Wymagają replica seta (lub sharded clustra), bo opierają się o oplog.

`$push` vs `$addToSet` — jaka jest różnica?

easymongodbarraysupdate+1
Otwórz pytanie

Odpowiedź

`$push` dopisuje wartość do tablicy (pozwala na duplikaty). `$addToSet` dodaje tylko wtedy, gdy wartość jeszcze nie istnieje (jak zbiór, bez duplikatów).

Jak działa unique index w MongoDB (i czemu go potrzebujesz)?

mediumunique-indexconcurrencymongodb
Otwórz pytanie

Odpowiedź

Unique index wymusza, że dwa dokumenty nie mogą mieć tej samej wartości dla indeksowanego klucza/kluczy. Bez niego sprawdzenia w aplikacji mogą się „wyścignąć” i utworzyć duplikaty przy współbieżności.

Co robi `$lookup` w agregacji MongoDB (i jaka jest pułapka)?

mediumlookupaggregationjoins+1
Otwórz pytanie

Odpowiedź

`$lookup` łączy dokumenty z innej kolekcji (jak left join). Pułapka: joiny mogą być drogie przy dużej skali; zadbaj o indeksy na kluczach łączenia i rozważ denormalizację/embedding, jeśli to pasuje.

Write concern `w:1` vs `w:"majority"` — jaki jest trade-off?

hardwrite-concerndurabilityreplica-set
Otwórz pytanie

Odpowiedź

`w:1` potwierdza zapis, gdy primary go przyjmie (mniejsza latencja, ale większe ryzyko przy failover). `w:"majority"` czeka na replikację do większości węzłów (większa trwałość, większa latencja).

Czemu niektóre update’y w MongoDB mogą z czasem zwalniać (wzrost/przenoszenie dokumentu)?

hardperformancedocument-growthupdates+1
Otwórz pytanie

Odpowiedź

Jeśli update powoduje wzrost dokumentu ponad przydzielone miejsce, MongoDB może przenieść dokument w nowe miejsce, co dokłada IO i fragmentację. Unikaj nieograniczonego wzrostu, aktualizuj „in place” gdy się da i modeluj dane tak, by rozmiar dokumentu był stabilny.

Read preference w MongoDB: co kontroluje (primary vs secondary)?

easymongoreplica-setread-preference+1
Otwórz pytanie

Odpowiedź

Read preference kontroluje, skąd idą odczyty w replica secie (np. `primary`, `secondary`, `secondaryPreferred`). Odczyty z secondary mogą odciążyć primary, ale możesz dostać lekko nieaktualne dane zależnie od laga replikacji i read concern.

Co to jest text index w MongoDB i jakie ma ograniczenia?

mediummongoindextext-search+1
Otwórz pytanie

Odpowiedź

Text index umożliwia full-text search zapytaniem `$text` oraz podstawowe stemming/scoring. Ograniczenia: można mieć tylko jeden text index na kolekcję i to mniej możliwości niż w dedykowanych silnikach wyszukiwania (zaawansowany ranking, fuzzy search).

Walidacja schematu w MongoDB: po co w “schemaless” bazie?

mediummongoschema-validationjson-schema+1
Otwórz pytanie

Odpowiedź

Walidacja schematu (np. JSON Schema) odrzuca niepoprawne dokumenty przy zapisie, co chroni jakość danych. Pomaga przy refaktorach i gdy wiele serwisów zapisuje do tej samej kolekcji, ale reguły muszą być kompatybilne wstecz (w migracji pozwól na stary i nowy kształt).

Read concern w MongoDB: `local` vs `majority` - co się zmienia?

hardmongoread-concernconsistency+1
Otwórz pytanie

Odpowiedź

`local` może zwrócić dane, które są na nodzie, z którego czytasz (szybko, ale mogą nie być jeszcze zreplikowane). `majority` zwraca dane potwierdzone przez większość członków replica seta, co daje mocniejszą spójność kosztem zwykle większej latencji.

Sharding w MongoDB: czemu zapytania “scatter-gather” są złe i jak ich unikać?

hardmongoshardingshard-key+1
Otwórz pytanie

Odpowiedź

Gdy zapytanie nie zawiera shard key (lub jego sensownego prefixu), `mongos` może musieć odpytywać wiele shardów i scalić wyniki (“scatter-gather”), co zwiększa latencję i obciążenie. Unikasz tego dobierając shard key zgodny z typowymi wzorcami zapytań i pisząc zapytania, które go używają.

Atomowość na poziomie dokumentu w MongoDB: co gwarantuje?

easymongoatomicitydocument+1
Otwórz pytanie

Odpowiedź

Gwarantuje, że pojedynczy zapis na jednym dokumencie jest „wszystko albo nic”: odczyty nie zobaczą „połowy” zmian. Nie daje atomowości na wielu dokumentach/kolekcjach — do tego potrzebujesz transakcji.

Co to jest covered query w MongoDB i czemu bywa szybsze?

mediummongoindexescovered-query+1
Otwórz pytanie

Odpowiedź

Covered query to takie zapytanie, które da się obsłużyć tylko z indeksu, bez pobierania całego dokumentu. Jest szybsze, bo nie trzeba doczytywać dokumentów z dysku/pamięci. Dzieje się tak, gdy filtr i zwracane pola są w tym samym indeksie (i nie potrzebujesz innych pól).

Wydajność aggregation pipeline: czemu dawać `$match` (i `$project`) jak najwcześniej?

mediummongoaggregationpipeline+1
Otwórz pytanie

Odpowiedź

Wczesny `$match` zmniejsza liczbę dokumentów przepływających przez kolejne etapy, więc pipeline ma mniej pracy. Jeśli `$match` jest na początku i pasuje do indeksu, MongoDB może użyć indeksu. Wczesny `$project` zmniejsza „payload”, co często zmniejsza zużycie pamięci i sieci.

Konflikty zapisu w transakcjach MongoDB: skąd się biorą i jak je obsłużyć?

hardmongotransactionsconcurrency+1
Otwórz pytanie

Odpowiedź

Pojawiają się, gdy równoległe transakcje próbują zmienić te same dokumenty/klucze, więc jedna z nich musi się wycofać, żeby zachować izolację. Aplikacja powinna to traktować jako błąd do ponowienia: ponów całą transakcję (z backoffem), trzymaj transakcje krótkie i rób efekty uboczne idempotentne, żeby retry było bezpieczne.

Balancer w sharded MongoDB (migracje chunków): co może pójść źle i jak zmniejszyć wpływ?

hardmongoshardingbalancer+1
Otwórz pytanie

Odpowiedź

Balancer przenosi chunki między shardami, żeby wyrównać rozkład danych. Migracje zużywają CPU/IO/sieć i potrafią podnieść latencję, szczególnie gdy przenoszą duże lub „gorące” chunki. Zmniejsz wpływ dobrym shard key (bez hotspotów), monitoringiem migracji, uruchamianiem ich poza szczytem oraz (gdy ma sens) strefami i pre-splittingiem.

Embedding vs referencing: kiedy warto osadzać dokumenty w MongoDB?

mediummongoschema-designembedding+1
Otwórz pytanie

Odpowiedź

Osadzaj, gdy dane dziecka są zwykle czytane razem z rodzicem i nie rosną bez limitu (np. zamówienie z pozycjami). Embedding daje mniej zapytań i atomowe aktualizacje w jednym dokumencie. Referencje wybieraj przy relacjach many‑to‑many lub nieograniczonym wzroście.

Indeks TTL: co robi i kiedy się go używa?

easymongottlindex+1
Otwórz pytanie

Odpowiedź

Indeks TTL automatycznie usuwa dokumenty po określonym czasie na podstawie pola daty. Używa się go do danych wygasających (sesje, OTP, tymczasowe logi), aby uniknąć ręcznego sprzątania.

Capped collections: co to jest i kiedy się przydają?

mediummongocapped-collectionstorage+1
Otwórz pytanie

Odpowiedź

Capped collection ma stały rozmiar i działa jak bufor cykliczny: gdy się zapełni, najstarsze dokumenty są nadpisywane. Przydaje się do logów, cache i strumieni, gdy chcesz ograniczoną przestrzeń i zachowanie kolejności wstawień.

Change streams: do czego służą?

mediummongochange-streamscdc+1
Otwórz pytanie

Odpowiedź

Change streams pozwalają obserwować zmiany w czasie rzeczywistym (insert/update/delete) w kolekcji lub bazie, podobnie do CDC. Przydają się do reaktywnych workflowów, invalidacji cache i architektur event‑driven.

Read concern vs write concern: co kontrolują?

mediummongoconsistencyread-concern+1
Otwórz pytanie

Odpowiedź

Read concern kontroluje spójność/zakres widoczności odczytów (np. local, majority). Write concern kontroluje trwałość i potwierdzenie zapisów (np. w:1, majority). To trade‑off między latencją a mocniejszymi gwarancjami.

Read preference w replica setach: co oznacza `primary` vs `secondary`?

mediummongoreplica-setread-preference+1
Otwórz pytanie

Odpowiedź

`primary` czyta tylko z primary (mocniejsza spójność). `secondary` pozwala czytać z secondary (mniejsza latencja i odciążenie, ale możliwe „stare” dane). Są też tryby typu `primaryPreferred` i `secondaryPreferred`.

Elekcje w replica secie: co się dzieje podczas elekcji?

mediummongoreplica-setelection+1
Otwórz pytanie

Odpowiedź

Gdy primary jest niedostępny, secondary przeprowadzają elekcję, wybierając nowe primary na podstawie kryteriów elekcji. W tym czasie zapisy są niedostępne, a część odczytów może być nieaktualna. Po elekcji nowe primary przyjmuje zapisy.

`$lookup`: co robi i jaka jest typowa pułapka?

mediummongolookupaggregation+1
Otwórz pytanie

Odpowiedź

`$lookup` wykonuje left outer join między kolekcjami w pipeline agregacji. Typowa pułapka to duży fan‑out joinu, który bywa wolny i pamięciożerny. Warto mieć indeksy na kluczach łączenia i filtrować jak najwcześniej.

Indeksy tekstowe: kiedy ich użyć i jakie mają ograniczenie?

mediummongotext-indexsearch+1
Otwórz pytanie

Odpowiedź

Indeksy tekstowe umożliwiają full‑text search na polach tekstowych z tokenizacją i stemmingiem. Są przydatne do wyszukiwania, ale mają ograniczenia (np. tylko jeden indeks tekstowy na kolekcję i mniejsza elastyczność niż wyspecjalizowane wyszukiwarki).

Indeksy unique vs sparse vs partial: jaka jest różnica?

hardmongoindexesunique+2
Otwórz pytanie

Odpowiedź

Indeks unique wymusza unikalność dla dokumentów objętych indeksem. Indeks sparse obejmuje tylko dokumenty, które mają dane pole. Indeks partial obejmuje dokumenty spełniające warunek filtra. Możesz je łączyć, by wymuszać unikalność tylko dla części danych.