MongoDB is een open-source databasesysteem dat data opslaat op een manier die fundamenteel verschilt van traditionele databases. Waar klassieke databases werken met tabellen en rijen, gebruikt MongoDB zogenaamde documents: flexibele gegevensblokken in JSON-achtig formaat (BSON). Dit maakt het eenvoudiger om complexe en wisselende datastructuren op te slaan.
MongoDB valt onder de categorie NoSQL-databases. Dat betekent dat het geen vaste tabelstructuur vereist. Je kunt gegevens opslaan zonder eerst een strak schema te definiëren. Dit geeft ontwikkelaars veel vrijheid, zeker bij projecten waarbij de datastructuur nog evolueert.
De database is ontwikkeld door het Amerikaanse bedrijf MongoDB, Inc. en voor het eerst uitgebracht in 2009. Vandaag de dag behoort het tot de meest gebruikte databases ter wereld, zowel bij startups als bij grote ondernemingen.
In MongoDB worden gegevens opgeslagen in documents, die zijn gegroepeerd in collections. Een collection is vergelijkbaar met een tabel in een relationele database, maar zonder vaste kolommen. Elk document kan een eigen structuur hebben, wat het systeem bijzonder flexibel maakt.
Een voorbeeld van een document in MongoDB ziet er zo uit:
{
"naam": "Jan de Vries",
"leeftijd": 34,
"email": "jan@voorbeeld.nl",
"adres": {
"stad": "Amsterdam",
"postcode": "1012 AB"
}
}Zoals je ziet, kunnen documenten geneste gegevens bevatten. Dat is een groot voordeel ten opzichte van traditionele databases, waar je hiervoor meerdere tabellen en joins nodig hebt.
MongoDB is beschikbaar in verschillende omgevingen. Je kunt het lokaal installeren op je eigen server (self-hosted), maar ook gebruikmaken van MongoDB Atlas: het volledig beheerde cloudplatform van MongoDB, Inc. Atlas draait op AWS, Google Cloud en Azure, en is voor veel teams de eenvoudigste manier om snel aan de slag te gaan.
MongoDB slaat gegevens op als BSON-documenten. BSON staat voor Binary JSON en is een binaire versie van het bekende JSON-formaat. Het ondersteunt meer datatypes dan standaard JSON, zoals datums en binaire data. Voor de gebruiker ziet het er gewoon uit als JSON.
Wanneer je een document opslaat, bepaal je zelf welke velden het bevat. Er is geen verplichte structuur. Twee documenten in dezelfde collection kunnen er compleet anders uitzien. Dit heet een schemaless aanpak, al kun je optioneel wel validatieregels instellen.
MongoDB werkt met een driver aan de kant van je applicatie. Die driver vertaalt de opdrachten van je code naar MongoDB-queries. Er zijn officiële drivers beschikbaar voor Python, JavaScript, Java, C#, Go en vele andere talen.
Een document is de kleinste eenheid in MongoDB. Het is vergelijkbaar met een rij in een relationele database, maar rijker van structuur. Een document kan tekst, getallen, arrays en geneste objecten bevatten, allemaal in één blok.
Collections zijn groepen van documenten. Ze zijn vergelijkbaar met tabellen, maar zonder vaste kolommen. Je maakt een collection aan door er simpelweg een document in op te slaan. MongoDB regelt de rest automatisch.
Documenten in dezelfde collection krijgen automatisch een uniek veld: _id. Dit is de primaire sleutel. Als je er zelf geen opgeeft, genereert MongoDB er een aan.
Het grootste verschil met een relationele database zoals MySQL of PostgreSQL zit in de structuur. Een relationele database werkt met tabellen, rijen en kolommen. Relaties tussen gegevens leg je vast via foreign keys en je combineert tabellen met joins.
MongoDB werkt anders. In plaats van gegevens te verdelen over meerdere tabellen, sla je ze bij elkaar op in één document. Dat maakt lezen sneller, maar vraagt een andere manier van denken bij het ontwerpen van je database.
De tabel hieronder geeft een overzicht van de belangrijkste verschillen:
Concept | Relationele database | MongoDB |
Opslagvorm | Tabel met rijen | Collection met documents |
Structuur | Vast schema | Flexibel schema |
Relaties | Foreign keys + joins | Geneste documenten of referenties |
Querytaal | SQL | MongoDB Query Language (MQL) |
Schaalbaarheid | Verticaal (krachtigere server) | Horizontaal (meer servers) |
Geen van beide is universeel beter. Een relationele database is sterk bij complexe relaties en transacties. MongoDB blinkt uit bij grote hoeveelheden data, snelle ontwikkeling en flexibele datastructuren.
MongoDB biedt een uitgebreide set aan functies die het geschikt maken voor uiteenlopende toepassingen. Hieronder volgt een overzicht van de meest relevante.
MongoDB ondersteunt ad-hoc queries. Dat betekent dat je op elk veld in een document kunt zoeken, filteren en sorteren, zonder dat je de query vooraf hoeft te definiëren. Dit geeft ontwikkelaars veel vrijheid tijdens het bouwen en testen van een applicatie.
Je kunt zoeken op exacte waarden, maar ook op bereiken, reguliere expressies of geneste velden. De querytaal van MongoDB, MQL (MongoDB Query Language), is intuïtief en goed gedocumenteerd.
Zonder indexen doorzoekt MongoDB elk document in een collection bij elke zoekopdracht. Dat werkt prima bij kleine datasets, maar wordt traag naarmate de data groeit. Met een index sla je een gesorteerde verwijzing op naar een specifiek veld, zodat MongoDB veel sneller het juiste document vindt.
MongoDB ondersteunt meerdere soorten indexen. Naast enkelvoudige indexen zijn er samengestelde indexen, tekst-indexen voor zoeken op woorden, en geo-indexen voor locatiegebaseerde zoekopdrachten.
MongoDB biedt ingebouwde replicatie via een replica set. Een replica set bestaat uit meerdere servers die elk een kopie van dezelfde data bewaren. Eén server fungeert als primaire node en verwerkt alle schrijfopdrachten. De andere servers zijn secundaire nodes en houden de data synchroon.
Valt de primaire server weg, dan kiezen de secundaire nodes automatisch een nieuwe primaire. Dit zorgt voor hoge beschikbaarheid zonder handmatige tussenkomst.
Bij grote hoeveelheden data of veel gelijktijdige gebruikers kan één server de belasting niet meer aan. MongoDB lost dit op met sharding: het verdelen van data over meerdere servers, ook wel shards genoemd. Elke shard bevat een deel van de totale dataset.
MongoDB verdeelt de data op basis van een shard key, een veld dat je zelf kiest. Een goed gekozen shard key zorgt voor een gelijkmatige verdeling en optimale prestaties.
De aggregation pipeline is een krachtig hulpmiddel voor het verwerken en analyseren van data. Je bouwt een pipeline op uit meerdere stappen, zoals filteren, groeperen, sorteren en berekeningen uitvoeren. Elke stap verwerkt de uitvoer van de vorige stap.
Dit maakt het mogelijk om complexe analyses direct in de database uit te voeren, zonder de data eerst naar een externe tool te exporteren.
Lange tijd was het ontbreken van multi-document transacties een veelgehoorde kritiek op MongoDB. Sinds versie 4.0 (2018) ondersteunt MongoDB echter volwaardige ACID-transacties, ook over meerdere documents en collections heen.
ACID staat voor Atomicity, Consistency, Isolation en Durability, de vier eigenschappen die garanderen dat databaseoperaties betrouwbaar verlopen. Dit maakt MongoDB geschikt voor toepassingen waarbij dataintegriteit cruciaal is, zoals financiële systemen.
Een capped collection is een collection met een vaste maximale grootte. Zodra de limiet bereikt is, overschrijft MongoDB automatisch de oudste documenten. Dit werkt als een ringbuffer.
Capped collections zijn nuttig voor toepassingen waarbij je alleen de meest recente gegevens nodig hebt, zoals logbestanden of activiteitsfeeds.
Via GridFS kan MongoDB grote bestanden opslaan die de maximale documentgrootte van 16 MB overschrijden. GridFS splitst het bestand op in kleinere stukken (chunks) en slaat elk stuk als apart document op. Bij het ophalen worden de stukken automatisch samengevoegd.
Dit maakt MongoDB bruikbaar als opslagplaats voor afbeeldingen, video's of andere binaire bestanden, zonder dat je een apart bestandssysteem nodig hebt.
MongoDB Atlas is het volledig beheerde cloudplatform van MongoDB, Inc. In plaats van een database zelf te installeren en te onderhouden, regelt Atlas dat voor je. Je kiest een cloudprovider, een regio en een clustergrootte, de rest is automatisch.
Atlas draait op de drie grootste cloudplatformen: Amazon Web Services (AWS), Google Cloud en Microsoft Azure. Je kunt kiezen in welke regio je data wordt opgeslagen, wat belangrijk is voor prestaties en privacywetgeving zoals de AVG.
Atlas neemt het operationele beheer van je database volledig uit handen. Denk aan automatische back-ups, beveiligingsupdates, monitoring en schaalbaarheid. Je hoeft geen serverkennis te hebben om aan de slag te gaan.
Naast de database zelf biedt Atlas een aantal aanvullende diensten. Atlas Search voegt krachtige zoekmogelijkheden toe op basis van Apache Lucene. Atlas Data Federation maakt het mogelijk om data uit verschillende bronnen te combineren en te bevragen alsof het één database is. En met Atlas Charts maak je direct visualisaties van je data, zonder externe tool.
Atlas heeft een gratis laag, de zogeheten M0 free tier. Die geeft je 512 MB opslagruimte en is bedoeld voor kleine projecten, prototypes of om het platform te leren kennen. Voor productieomgevingen zijn er betaalde plannen die meeschalen met je gebruik.
De prijzen zijn gebaseerd op de grootte van je cluster, het geheugen, de opslag en het dataverkeer. Je betaalt alleen voor wat je gebruikt.
Voor grotere teams biedt Atlas extra mogelijkheden op het gebied van toegangsbeheer, auditing en compliance. Je kunt rollen en rechten nauwkeurig instellen per gebruiker of team. Ook is er ondersteuning voor private netwerkkoppelingen via AWS PrivateLink, Google Cloud Private Service Connect en Azure Private Link, zodat je database niet via het publieke internet bereikbaar hoeft te zijn.
Atlas is daarmee niet alleen geschikt voor individuele ontwikkelaars, maar ook voor organisaties met strikte beveiligingseisen.
MongoDB is niet de enige database op de markt. Afhankelijk van je use case kan een andere oplossing beter passen. Hieronder vergelijken we MongoDB met twee veelgebruikte alternatieven.
MySQL is een van de meest gebruikte relationele databases ter wereld. Het werkt met tabellen, vaste schema's en SQL als querytaal. Het is volwassen, goed gedocumenteerd en breed ondersteund.
MongoDB en MySQL verschillen fundamenteel in hoe ze data opslaan en benaderen. MySQL is sterk bij gestructureerde data met duidelijke relaties, zoals een webshop met klanten, bestellingen en producten. MongoDB is beter geschikt als de datastructuur flexibel is of regelmatig verandert.
Kenmerk | MongoDB | MySQL |
Datamodel | Document (BSON) | Tabel (rijen en kolommen) |
Schema | Flexibel | Vast |
Querytaal | MQL | SQL |
Joins | Beperkt (via $lookup) | Volledig ondersteund |
Schaalbaarheid | Horizontaal (sharding) | Voornamelijk verticaal |
Transacties | Volledig (vanaf v4.0) | Volledig |
Beste use case | Flexibele, grote datasets | Gestructureerde, relationele data |
Voor veel moderne webapplicaties is MongoDB een goede keuze. Maar als je werkt met complexe relaties tussen veel verschillende entiteiten, biedt MySQL meer structuur en controle.
Apache Cassandra is een andere NoSQL-database, maar met een ander doel dan MongoDB. Cassandra is ontworpen voor extreem hoge schrijfsnelheden en maximale beschikbaarheid, verspreid over meerdere datacenters. Het wordt gebruikt door bedrijven als Netflix en Apple voor het verwerken van enorme hoeveelheden data.
Het grote verschil zit in de prioriteiten. Cassandra kiest altijd voor beschikbaarheid boven consistentie. MongoDB doet het omgekeerde: het prioriteert consistentie en biedt tegelijk goede beschikbaarheid via replica sets.
Kenmerk | MongoDB | Cassandra |
Datamodel | Document | Wide-column |
Querytaal | MQL | CQL (Cassandra Query Language) |
Schrijfsnelheid | Hoog | Zeer hoog |
Consistentie | Sterk | Uiteindelijk (configureerbaar) |
Beschikbaarheid | Hoog | Zeer hoog |
Beste use case | Algemeen gebruik, flexibele data | Massale schrijfoperaties, IoT, logs |
Cassandra is geen vervanging voor MongoDB en andersom. Cassandra is de juiste keuze als schrijfsnelheid en wereldwijde spreiding de topprioriteit zijn. MongoDB is veelzijdiger en eenvoudiger in gebruik voor de meeste applicaties.
MongoDB wordt ingezet in uiteenlopende sectoren en toepassingen. De flexibele datastructuur en schaalbaarheid maken het geschikt voor situaties waarin data snel verandert of moeilijk in een vast schema past.
Mobiele apps genereren veel verschillende soorten data: gebruikersprofielen, locatiegegevens, voorkeuren, notificaties. Die data verschilt per gebruiker en verandert regelmatig. MongoDB past zich daar gemakkelijk op aan dankzij het flexibele documentmodel.
Daarnaast biedt MongoDB Realm, het mobiele platform van MongoDB, de mogelijkheid om data lokaal op het apparaat op te slaan en automatisch te synchroniseren met de cloud. Dit zorgt voor een soepele gebruikerservaring, ook zonder internetverbinding.
Bij real-time analytics gaat het om het verwerken en analyseren van grote hoeveelheden data terwijl die binnenkomt. Denk aan gebruikersgedrag op een website, sensordata van machines of transacties in een betaalsysteem.
MongoDB is hier sterk in door de combinatie van snelle schrijfoperaties en de krachtige aggregation pipeline. Analyses worden direct in de database uitgevoerd, wat de vertraging tussen dataverzameling en inzicht minimaliseert.
Content management systemen (CMS) werken met sterk wisselende contenttypen. Een artikel heeft andere velden dan een video, een podcast of een productpagina. In een relationele database betekent dit vaak ingewikkelde tabelstructuren of veel lege velden.
MongoDB lost dit elegant op. Elk contenttype krijgt zijn eigen documentstructuur, zonder dat je het schema van andere types hoeft aan te passen. Dit maakt het eenvoudiger om nieuwe contenttypen toe te voegen naarmate een platform groeit.
Grote organisaties slaan enorme hoeveelheden bedrijfsdata op voor rapportage en analyse. Traditioneel gebeurde dit in gespecialiseerde datawarehouses op basis van relationele technologie. MongoDB biedt een alternatief voor situaties waarbij de data divers en ongestructureerd is.
Via Atlas Data Federation kunnen organisaties data uit meerdere bronnen, waaronder S3, Atlas-clusters en andere databases, samenvoegen en bevragen als één geheel. Dit maakt MongoDB ook geschikt als onderdeel van een moderne data-architectuur.
MongoDB heeft veel te bieden, maar is niet voor elke situatie de beste keuze. Een eerlijk beeld vereist zowel de sterke punten als de beperkingen.
MongoDB heeft een aantal eigenschappen die het onderscheiden van traditionele databases. Het flexibele schema is het meest genoemde voordeel. Je kunt snel starten zonder een volledig uitgewerkt datamodel, en de structuur aanpassen naarmate je applicatie groeit.
De horizontale schaalbaarheid via sharding maakt het mogelijk om zeer grote datasets te verwerken zonder over te stappen op duurdere hardware. Dit is een groot voordeel voor applicaties met snel groeiende datavolumes.
Daarnaast is MongoDB breed ondersteund. Er zijn officiële drivers voor tientallen programmeertalen, uitgebreide documentatie en een grote community. Voor de meeste problemen is een oplossing of voorbeeld gemakkelijk te vinden.
Tot slot is de integratie met moderne ontwikkelomgevingen soepel. Het JSON-achtige documentformaat sluit goed aan bij JavaScript en veel moderne frameworks, wat de leercurve voor webontwikkelaars verkleint.
Tegenover de voordelen staan ook beperkingen. Het flexibele schema is een voordeel, maar ook een risico. Zonder discipline of validatieregels kan een collection snel rommelig worden, met inconsistente veldnamen of ontbrekende gegevens.
MongoDB is minder geschikt voor toepassingen met veel complexe relaties tussen entiteiten. Joins zijn mogelijk via de $lookup-operator, maar zijn minder efficiënt dan in een relationele database. Bij zwaar relationele data blijft SQL vaak de betere keuze.
Geheugengebruik is een ander aandachtspunt. MongoDB presteert het best als een groot deel van de werkset in het RAM-geheugen past. Bij beperkte hardwarebronnen kan dit een knelpunt zijn.
Ten slotte vraagt het ontwerpen van een goede sharding-strategie ervaring. Een verkeerde shard key kan leiden tot ongelijkmatige dataverdeling en prestatieproblemen die achteraf moeilijk te corrigeren zijn.
MongoDB is beschikbaar voor Windows, macOS en Linux. Je kunt kiezen voor een lokale installatie of direct starten met MongoDB Atlas in de cloud. Voor ontwikkeling en kleine projecten is een lokale installatie prima. Voor productieomgevingen is Atlas vaak de snellere en beheervriendelijkere keuze.
De eenvoudigste manier om MongoDB lokaal te installeren is via de officiële website: mongodb.com/try/download/community. Hier download je de Community Edition, de gratis versie van MongoDB.
Op macOS kun je MongoDB ook installeren via Homebrew met het volgende commando:
brew tap mongodb/brew
brew install mongodb-communityOp Ubuntu Linux gebruik je de pakketbeheerder APT. Voeg eerst de officiële MongoDB-repository toe en installeer daarna het pakket:
sudo apt-get install -y mongodb-orgNa de installatie start je de MongoDB-service met:
sudo systemctl start mongodNaast de database zelf is het handig om MongoDB Compass te installeren. Dit is een grafische interface waarmee je databases, collections en documenten visueel kunt beheren en doorzoeken, zonder commando's te typen.
Na de installatie verbind je met de database via de mongosh-shell. Start de shell met:
mongoshJe bent nu verbonden met de lokale MongoDB-instantie. Een nieuwe database maak je aan door er simpelweg naartoe te navigeren met het use-commando:
use mijnDatabaseMongoDB maakt de database pas echt aan op het moment dat je er data in opslaat. Voeg een eerste document toe aan een collection met insertOne:
db.gebruikers.insertOne({
naam: "Lisa Bakker",
email: "lisa@voorbeeld.nl",
leeftijd: 28
})MongoDB bevestigt de operatie en geeft de gegenereerde _id terug. De collection gebruikers bestaat nu automatisch. Je kunt de opgeslagen documenten ophalen met:
db.gebruikers.find()Dat is alles wat nodig is om te beginnen. Vanaf hier kun je collections uitbreiden, indexen aanmaken en queries bouwen.
MongoDB heeft zich in de afgelopen jaren bewezen als een betrouwbare en veelzijdige database voor uiteenlopende toepassingen. Het flexibele documentmodel, de horizontale schaalbaarheid en de brede taalondersteuning maken het een sterke keuze voor teams die snel willen bouwen en meegroeien met hun data.
Het is geen vervanging voor elke relationele database. Bij complexe relaties en strikte datastructuren blijft SQL vaak de betere optie. Maar voor moderne webapplicaties, mobiele platformen, real-time analytics en contentgedreven systemen biedt MongoDB een solide en schaalbaar fundament.
Of je nu kiest voor een lokale installatie of MongoDB Atlas in de cloud, de drempel om te beginnen is laag. De technologie is volwassen, de community is groot en de documentatie is uitgebreid.
MongoDB is een open-source NoSQL-database die gegevens opslaat in flexibele, JSON-achtige documenten. Het wordt gebruikt omdat het gemakkelijk schaalt, geen vast schema vereist en goed aansluit bij moderne applicatieontwikkeling. Het is populair bij webapplicaties, mobiele apps en systemen met grote of wisselende datastructuren.
Dat hangt af van de situatie. MongoDB is beter geschikt voor flexibele, ongestructureerde of snel veranderende data en horizontale schaalbaarheid. SQL-databases zijn sterker bij complexe relaties tussen entiteiten en situaties waarbij strikte dataintegriteit vereist is. De beste keuze hangt af van je specifieke use case.
Nee. MongoDB is een Amerikaans bedrijf, opgericht in New York in 2007. Het staat genoteerd aan de Amerikaanse beurs (NASDAQ) onder de ticker MDB. Het hoofdkantoor bevindt zich in New York City.
MongoDB is een NoSQL-database. Het gebruikt geen SQL als querytaal en werkt niet met tabellen en rijen. In plaats daarvan slaat het data op in documenten en gebruikt het MQL (MongoDB Query Language) voor het bevragen van die data.