Ga naar hoofdinhoud

MongoDB-tutorial: MongoDB-databases instellen en query’s uitvoeren

Leer hoe je verbinding maakt met en MongoDB-databases analyseert in Python.
Bijgewerkt 2 okt 2026  · 10 min lezen

Verken met AI

ChatGPTClaudePerplexity

Je hebt vast wel eens gehoord van, of zelfs gewerkt met, relationele databases. Het rij-tabel-formaat is de populairste en meest intuïtieve structuur om informatie op te slaan. Helaas kun je niet alle data die je tegenkomt in rijen en tabellen kwijt. Sterker nog, veel problemen in de echte wereld vragen om niet-relationele databases. Zijn er dus alternatieven?

Het antwoord is JA! Er zijn vier typen databases die geen rijen of tabellen hebben. Dit zijn NoSQL-databases, omdat je er geen SQL op kunt gebruiken. Het gaat om:

  • Key-value-databases
  • Documentdatabases
  • Kolomgeoriënteerde (column family) databases
  • Grafendatabases

Dit artikel richt zich op documentdatabases en hoe je een server genaamd MongoDB gebruikt. Maar voordat we in de technische details duiken, kijken we eerst naar de use cases van documentdatabases. Meer informatie over grafendatabases vind je in onze aparte gids over grafdatabases.

Wanneer gebruik je documentdatabases?

Een van de belangrijkste redenen om voor documentdatabases te kiezen is wanneer je data hebt die niet netjes in een vooraf gedefinieerd schema zoals een tabel past. Veel processen of applicaties in verschillende sectoren slaan dit soort data op. Enkele voorbeelden:

  • Web- en mobiele apps: gebruikersprofielen, voorkeuren, content en interacties
  • Contentmanagementsystemen: een breed scala aan media opslaan, zoals tekst, afbeeldingen, video, GIF’s, enz.
  • E-commerceplatforms: productcatalogi, klantinformatie, bestelgeschiedenis, voorraad, enz.
  • Gaming: spelersprofielen, ranglijsten
  • Logging en dataverzameling: grote hoeveelheden logs, events, metrics voor analyse, enz.

Denk even na over hoe data uit deze sectoren in tabellen zou passen. E-commerceplatforms hebben bijvoorbeeld moeite om productcatalogi in een vooraf gedefinieerd schema te persen. Verschillende producten hebben verschillende attributen of, nog lastiger, een verschillend aantal attributen. Heb je 10 kolommen nodig om 10 fysieke eigenschappen van drones van 100 verschillende merken op te slaan, of slechts 5–6 om boekinformatie op te slaan?

Tabelgebaseerde databases helpen je niet in zulke scenario’s. Met documentdatabases zoals MongoDB profiteer je van de volgende voordelen:

  • Geen initiële ontwikkelkosten om een schema te ontwerpen
  • Documenten (data) kunnen in de tijd variëren (inclusief datatypen, aantal attributen, enz.)
  • Documentdatabases vermijden joins, wat resulteert in veel snellere query’s
  • Intuïtief voor developers, omdat documentdatabases meestal grote JSON-bestanden zijn — voor Pythonistas in feite gigantische dictionaries.
  • Document-DB’s schalen horizontaal, wat betekent dat ze niet steeds meer rekenkracht nodig hebben naarmate de database groeit.

Laten we nu kijken naar de kernconcepten rond documentdatabases en MongoDB.

Kernconcepten rond MongoDB

Ik heb het tot nu toe steeds over documentdatabases gehad, maar wat zijn dat nu eigenlijk? Dit zijn de belangrijkste concepten:

  • Documenten: data wordt opgeslagen in objecten die documenten worden genoemd. Simpel gezegd lijken documenten op JSON key-value-objecten. Eén document is gelijk aan een rij in een tabel. Ben je Python-programmeur, dan kun je aan een document denken als een dictionary, en dan zit je goed. Onthoud alleen dat documenten geneste documenten kunnen hebben — een van de belangrijkste kenmerken van documentdatabases.
  • Collecties: collecties zijn zoals tabellen in relationele databases, maar in plaats van rijen bevatten ze — je raadt het al — documenten. Collecties zijn enorme datastructuren die duizenden of miljoenen dictionaries kunnen bevatten.
  • Schema-loos: Hier wordt het interessant. Een collectie kan documenten van verschillende grootte hebben. Zo kan document 1 tien key-value-paren hebben, terwijl document 2 er vijftien heeft (zolang de informatie over dezelfde categorie/onderwerp gaat — zoals producten — zodat de collectie logisch blijft).

Hier is een mooie tabel die de verschillen samenvat tussen relationele databases en documentdatabases:

Kenmerk Documentdatabases (bijv. MongoDB) Relationele databases (bijv. MySQL, PostgreSQL)
Datastructuur Slaat data op als documenten (bijv. JSON, BSON), met flexibele, hiërarchische structuren. Slaat data op in tabellen met rijen en kolommen, volgens een vooraf gedefinieerd schema.
Schemaflexibiliteit Schema-loos: documenten kunnen verschillende structuren hebben, met uiteenlopende velden en datatypen. Vast schema: vereist een vooraf gedefinieerd schema met specifieke kolommen en datatypen.
Querytaal Gebruikt MongoDB Query Language (MQL) of vergelijkbaar, objectgebaseerd en flexibeler. Gebruikt SQL (Structured Query Language) voor query’s op gestructureerde data.
Joins Vermijdt joins door gerelateerde data in documenten op te nemen (denormalisatie). Ondersteunt complexe joins tussen tabellen (normalisatie).
Prestaties Snellere reads en writes voor ongestructureerde of semi-gestructureerde data. Vermijdt overhead van joins. Sterke prestaties voor gestructureerde data, maar joins kunnen query’s vertragen.
Schaalbaarheid Horizontaal schaalbaar: kan data over meerdere servers verdelen via sharding. Doorgaans verticaal schaalbaar: leunt op krachtigere hardware, al is horizontale schaal mogelijk (bijv. met partities).
Transactieondersteuning Ondersteunt multi-document ACID-transacties (vanaf MongoDB 4.0 en hoger), maar is oorspronkelijk ontworpen voor niet-transactionele operaties. Volledige ondersteuning voor ACID-conforme transacties, met sterke consistentie en betrouwbaarheid.
Use cases Het best voor ongestructureerde of semi-gestructureerde data zoals gebruikersprofielen, logs, catalogi en flexibele datastructuren. Ideaal voor gestructureerde data met duidelijke relaties, zoals financiële gegevens of ERP.
Datarelaties Ondersteunt ingesloten data (denormalisatie), waardoor gerelateerde info eenvoudig met één query op te halen is. Relationele databases gebruiken foreign keys om relaties tussen tabellen vast te leggen (normalisatie).
Indexering Ondersteunt indexering, maar mist de variëteit en verfijning van indexen in relationele databases. Sterke indexeringsmogelijkheden, met meerdere indextypen (bijv. B-tree, hash) voor performance-optimalisatie.
Consistentie Biedt eventual consistency in gedistribueerde setups, maar ook sterke consistentie wanneer nodig (via ACID-transacties). Waarborgt meestal sterke consistentie dankzij ACID-transacties en relationele integriteit.
Schalen van datavolume Schaalt eenvoudig door meer servers toe te voegen (sharding) om grote datavolumes aan te kunnen. Kan verticaal schalen; horizontaal schalen vergt complexere configuratie (bijv. partitionering).
Dataintegriteit Dataintegriteit wordt binnen elk document beheerd; relaties tussen documenten beheren is uitdagender. Sterke ingebouwde ondersteuning voor dataintegriteit via primary en foreign keys en constraints zoals UNIQUE en NOT NULL.
Vriendelijkheid voor developers Developer-vriendelijk: flexibel datamodelleren, werkt goed met moderne applicaties (bijv. JSON, REST-API’s). Rigide datamodellering, maar vertrouwd terrein voor developers die bekend zijn met SQL en gestructureerde data.

Laten we nu echt met documenten in MongoDB aan de slag gaan!

MongoDB instellen: verbinden met databronnen

Om documentdatabases te bevragen, moeten we de MongoDB-server installeren. Hier zijn de platformspecifieke instructies:

  • Voor Windows: volg de instructies via deze link.
  • Voor Unix-achtige systemen kun je MongoDB via de terminal installeren:
$ sudo apt-get install -y mongodb

Installeer vervolgens binnen een virtual environment de libraries pymongo en requests. pymongo is de officiële Python-adapter voor de MongoDB-server. We hebben de requests-library nodig om data uit een API op te halen.

$ pip install pymongo
$ pip install requests

Start daarna vanuit de terminal de MongoDB-server met het volgende commando:

$ sudo service mongodb start

Nu zijn we klaar om data in een documentdatabase te laden. Daarbij zijn er twee scenario’s:

  1. Je hebt lokaal data in geschikte formaten zoals JSON, BSON, YAML of XML.
  2. Je moet data ophalen uit externe bronnen, meestal API’s.

We behandelen allebei. Laten we eerst lokaal een collectie genaamd drone_races.json laden. Zo doe je dat:

import json

from pymongo import MongoClient

# Establish connection to MongoDB
client = MongoClient("localhost", 27017)
# Create a database named "drones"
drones = client["drones"]
# Create a collection named "races"
races = drones["races"]

# Load dataset into MongoDB
with open("data/drone_races.json", "r") as file:
   data = json.load(file)
   races.insert_many(data)

De twee belangrijkste objecten voor ons zijn drones (een database) en races (een collectie). De meeste functies en methoden hebben betrekking op collecties. Databaseobjecten worden vooral gebruikt om collecties te beheren.

Bekijk nu hoe we dezelfde data via een API laden. Ik heb de informatie als een API opgeslagen met een service genaamd Mockaroo. Hier is de snippet:

import requests
from pymongo import MongoClient

# Fetch data from the API
api_url = (
   "https://my.api.mockaroo.com/drone_race_matches.json?key=6f5a6b50"
)
response = requests.get(api_url)

if response.status_code == 200:
   data = response.json()  # Get the JSON data from the API

   # Establish a connection to MongoDB
   client = MongoClient()

   # Access or create a specific database
   drones = client["drones"]

   # Access or create a specific collection within the database
   races = drones["races"]

   # Insert the fetched data into the MongoDB collection
   races.insert_many(data)
else:
   print("Failed to fetch data from the API.")

We hebben data geladen in de collectie races van de documentdatabase drones — of toch niet? Laten we het controleren met query’s!

Eenvoudige MongoDB-query’s

Documenten tellen in MongoDB

We moeten de documenten tellen om te zien of er data in een collectie staat. We gebruiken daarvoor de methode count_documents:

>>> races.count_documents({})
9040

Let op de lege dictionary die aan count_documents wordt doorgegeven. Die dictionary heet een filter in MongoDB. In de rest van de tutorial leren we hoe we de dictionary vullen om verschillende soorten filters te maken. Nu hebben we geen filter. De bovenstaande code is hetzelfde als SELECT COUNT(*) FROM table_name in SQL.

We hebben 9040 documenten — yes! Laten we nu naar wat data kijken.

Eén document ophalen in MongoDB

Om één document te bekijken met pymongo, kunnen we de methode find_one gebruiken:

from pprint import pprint

>>> pprint(races.find_one())
{'_id': ObjectId('659d31e9255ec0cf4bab529d'),
'laps': 3,
'league': 'F1 Drones',
'location': {'city': 'Ford',
             'country': 'United Kingdom',
             'date': 'error: invalid date "2024-10-25"',
             'venue': 'Manhattan Seas'},
'name': 'Honorable',
'pilots': {'drone': 'DJI3-old',
           'finishing_position': 66,
           'name': 'Kariotta Cow',
           'qualification_time': 27.39,
           'team': 'Sky Crusaders',
           'telemetry': {'altitude': 34.3,
                         'battery_voltage': 12.1,
                         'speed': 68.3,
                         'timestamp': 'error: invalid date '
                                      '"2024-10-25T14:09:26Z"'}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat'],
'weather_conditions': 'snowy'}

Let op de velden (keys) van dit document. Het slaat informatie op over één dronerace en bevat zaken als:

  • Het aantal ronden
  • Weersomstandigheden tijdens de wedstrijd
  • De piloten (niet allemaal) tijdens de wedstrijd
  • Wedstrijdsponsors, enzovoort.

Het document heeft ook een verplicht veld _id, een unieke hash.

Alle documenten selecteren in MongoDB

count_documents geeft altijd een getal terug, maar soms willen we de data bekijken die door onze query wordt opgehaald. Daarvoor kunnen we de grote broer van find_one gebruiken: find:

from pprint import pprint

for race in races.find():
   pprint(race)
   break

{'_id': ObjectId('659d31e9255ec0cf4bab529d'),
'laps': 3,
'league': 'F1 Drones',
'location': {'city': 'Ford',
             'country': 'United Kingdom',
             'date': 'error: invalid date "2024-10-25"',
             'venue': 'Manhattan Seas'},
'name': 'Honorable',
'pilots': {'drone': 'DJI3-old',
           'finishing_position': 66,
           'name': 'Kariotta Cow',
           'qualification_time': 27.39,
           'team': 'Sky Crusaders',
           'telemetry': {'altitude': 34.3,
                         'battery_voltage': 12.1,
                         'speed': 68.3,
                         'timestamp': 'error: invalid date '
                                      '"2024-10-25T14:09:26Z"'}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat'],
'weather_conditions': 'snowy'}

find met een lege query (geen argumenten) geeft documenten één voor één terug, maar dat is niet wat we willen! We willen query’s uitvoeren om interessante vragen over onze data te beantwoorden. Daar komen filterdocumenten van pas.

Selecteren op basis van een voorwaarde in MongoDB

Laten we beginnen met de simpelste filters — documenten matchen waarbij een veld gelijk is aan een bepaalde waarde. Dit komt overeen met:

SELECT *
 FROM table_name
WHERE field = value

Laten we dit in MongoDB doen:

criteria = {"sponsors": "Fat Shark"}

fat_shark_races = races.count_documents(criteria)
fat_shark_races

6194

Hierboven kiezen we de races met "Fat Shark" als sponsor. De syntax is simpelweg een dictionary die het veld sponsors aan "Fat Shark" koppelt.

De MongoDB-querytaal zou geen taal zijn zonder ongelijkheidsoperatoren. Zo gebruik je de “kleiner dan”-operator:

criteria = {"pilots.qualification_time": {"$lt": 10}}

quick_races = races.count_documents(criteria)
quick_races

3061

De bovenstaande query introduceert vier nieuwe kenmerken van de MongoDB Query Language (MQL):

  • Je kunt subvelden benaderen met dotnotatie. pilots.qualification_time haalt de geneste qualification time binnen het veld pilots op.
  • Vrijwel alle operatoren in MQL beginnen met een dollarteken.
  • Operatoren worden gebruikt in een genest document zoals hierboven.
  • $lt staat voor de “kleiner dan”-operator.

Het resultaat vertelt ons dat er 3061 wedstrijden waren waarin een piloot minder dan 10 seconden kwalificatietijd had. Deze query was mogelijk met de operator $lt. Dit zijn de broertjes en zusjes:

  • $lte: kleiner dan of gelijk aan
  • $gt: groter dan
  • $gte: groter dan of gelijk aan.

Ze hebben dezelfde syntax als $lt.

Selecteren met logische conditionele operatoren in MongoDB

MQL bevat ook logische conditionele operatoren zoals $and en $or. Laten we met de laatste beginnen.

We halen races op met ofwel het Verenigd Koninkrijk als locatie of Etisalat als sponsor:

criteria = {
   "$or": [
       {"location.country": "United Kingdom"},
       {"sponsors": "Etisalat"},
   ]
}

>>> races.count_documents(criteria)

6223

Gebruik opnieuw de knop Explain code voor een gedetailleerde uitleg.

Er zijn 6223 documenten die aan onze criteria voldoen. Wil je een OR-logica voor meerdere waarden binnen hetzelfde veld, gebruik dan de operator $in.

Zo kun je bijvoorbeeld op slechte weersomstandigheden controleren:

criteria = {
   "weather_conditions": {"$in": ["rainy", "snowy", "cloudy"]}
}

>>> races.count_documents(criteria)

5508

Deze query zou met de operator $or onhandig zijn om te schrijven. Dan nu $and.

Dit keer willen we races vinden met Australië als locatie EN Fat Shark als sponsor. Zo doe je dat met $and:

criteria = {
   "$and": [
       {"location.country": "Australia"},
       {"sponsors": "Fat Shark"},
   ]
}
>>> races.count_documents(criteria)
193

In de praktijk gebruik je $and echter zelden, want het kan veel eenvoudiger:

criteria = {
   "location.country": "Australia",
   "sponsors": "Fat Shark",
}

races.count_documents(criteria)
193

Voeg simpelweg meer key-value-paren toe aan het filterdocument om de AND-logica te krijgen.

Tot slot is er de operator $nin, die controleert op niet-lidmaatschap. We kunnen bijvoorbeeld alle wedstrijden teruggeven die niet in de Verenigde Staten, het Verenigd Koninkrijk of Australië zijn gehouden:

criteria = {
   "location.country": {
       "$nin": ["United States", "United Kingdom", "Australia"]
   }
}

>>> races.count_documents(criteria)
126

Dit laat alleen de Verenigde Arabische Emiraten over als land, dus de bovenstaande query had ook zo geschreven kunnen worden:

criteria = {"location.country": "United Arab Emirates"}

>>> races.count_documents(criteria)
126

Maar je snapt het idee.

Zoeken naar null- of ontbrekende waarden in MongoDB

Controleren op null- of ontbrekende waarden is een universele bewerking in alle data-analytische taken. Daar is in MongoDB een operator voor — $exists. Hier zijn twee voorbeelden die controleren of een bepaald veld bestaat:

criteria = {"location.district": {"$exists": True}}

>>> races.count_documents(criteria)

0

Hmm, het blijkt dat het veld district niet bestaat in een van de documenten. Het veld laps moet echter in alle documenten bestaan, omdat het cruciale informatie over races bevat.

criteria = {"laps": {"$exists": True}}

races.count_documents(criteria)
9040

Zoals verwacht hebben alle documenten het veld laps. Maar hoe zit het met velden die wel bestaan maar de waarde null hebben? Ook dat kunnen we controleren:

criteria = {"pilots.finishing_position": None}

races.count_documents(criteria)
0

Met het ingebouwde object None in Python kun je elk veld op ontbrekende waarde controleren.

Er zijn ook geavanceerdere scenario’s die null- of existence-checks vereisen. Misschien wil je bijvoorbeeld controleren of bepaalde elementen in grote geneste arrays bestaan.

Daarvoor kunnen we array-indexering in MQL gebruiken. Zo moeten we, om races met slechts één sponsor te vinden, checken of het tweede element van de array sponsors bestaat:

# Counting starts with 0 as always
criteria = {"sponsors.1": {"$exists": False}}

races.count_documents(criteria)
2929

En het is zo eenvoudig als het indexnummer aan de key toevoegen. In onze collectie werden dus bijna 3000 races door slechts één partij gesponsord.

Deze array-indexeringssyntax werkt voor veel andere operatoren, niet alleen $exists.

Projecties (velden beperken)

Het laatste onderdeel in deze tutorial zijn projecties. Tot nu toe bevatten onze queryresultaten elk veld in elk document. Dat is niet ideaal als je documenten honderden velden hebben. Stel je de onleesbare output voor wanneer je ze print!

Om de velden te kiezen die we terug willen krijgen, gebruiken we projecties. Zo werkt het:

criteria = {"pilots.telemetry.speed": {"$gte": 20}}
projection = {
   "sponsors": 1,
   "location.country": 1,
   "pilots.telemetry.speed": 1,
   "pilots.name": 1,
}

fast_pilots = races.find(criteria, projection)

for pilot in fast_pilots:
   pprint(pilot)
   break

In dit geval schrijven we onze filtercriteria zoals gewoonlijk, maar definiëren we daarnaast een document met vier velden op 1. Als we dit projection-document als tweede argument doorgeven aan find of count_documents, krijgen we in de output alleen de velden die op 1 staan.

{'_id': ObjectId('659d31e9255ec0cf4bab529d'),
'location': {'country': 'United Kingdom'},
'pilots': {'name': 'Kariotta Cow', 'telemetry': {'speed': 68.3}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat']}

Hoewel we slechts vier velden kozen, is het hardnekkige veld _id er toch bijgekomen. Om dit te onderdrukken, zet je het op 0 in de dictionary projection:

criteria = {"pilots.telemetry.speed": {"$gte": 20}}
projection = {
   "sponsors": 1,
   "location.country": 1,
   "pilots.telemetry.speed": 1,
   "pilots.name": 1,
   "_id": 0,
}

fast_pilots = races.find(criteria, projection)

for pilot in fast_pilots:
   pprint(pilot)
   break

{'location': {'country': 'United Kingdom'},
'pilots': {'name': 'Kariotta Cow', 'telemetry': {'speed': 68.3}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat']}

Dat staat een stuk netter.

Wil je tot slot alles teruggeven behalve een paar velden, zet die velden dan op 0:

projection = {"_id": 0, "league": 0, "pilots": 0}

# Empty criteria for this one
races.find_one({}, projection)

{'name': 'Honorable',
'location': {'venue': 'Manhattan Seas',
 'city': 'Ford',
 'country': 'United Kingdom',
 'date': 'error: invalid date "2024-10-25"'},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat'],
'laps': 3,
'weather_conditions': 'snowy'}

Zoals je ziet hebben we dit keer alle velden behalve _id, league en pilots.

Conclusie

Deze tutorial doet geen recht aan de enorme omvang van MongoDB als databasebeheertool. Vandaag hebben we alleen GET-query’s behandeld (query’s om informatie op te halen), maar MongoDB laat dataspecialisten ook informatie invoegen, updaten of verwijderen in documentdatabases. We hebben daarnaast een hele klasse query’s overgeslagen — aggregaties.

Al deze onderwerpen vallen buiten de scope van dit artikel en vereisen extra bronnen om ze te leren. Bekijk deze eens:

FAQs

Hoe verschillen documentdatabases zoals MongoDB van relationele databases?

Documentdatabases, zoals MongoDB, slaan data op in documenten (vaak in JSON-achtige formaten) die geneste datastructuren kunnen bevatten. Dit verschilt van relationele databases, die data opslaan in rijen en tabellen met een vast schema. Documentdatabases bieden meer flexibiliteit omdat het schema dynamisch is: elk document kan verschillende velden en datatypen hebben. Dit maakt MongoDB geschikt voor ongestructureerde of semi-gestructureerde data, in tegenstelling tot relationele databases die een vooraf gedefinieerd schema vereisen.

Waarom zou ik MongoDB gebruiken in plaats van een relationele database?

MongoDB is handig wanneer je werkt met data die niet netjes in een tabelstructuur past. Gebruik MongoDB als je data een flexibel schema heeft, als je veel veranderingen in de datastructuur verwacht, of als je grote hoeveelheden ongestructureerde data moet verwerken. Het is ook een goede keuze voor applicaties die op schaal snelle lees- en schrijfbewerkingen vereisen, zoals e-commerce, logging en contentmanagementsystemen.

Welke programmeertalen zijn compatibel met MongoDB?

MongoDB is compatibel met een breed scala aan programmeertalen, waaronder Python, Java, JavaScript, Node.js, Go, Ruby en C#, via officiële drivers en libraries. De Python-library pymongo wordt vaak gebruikt om in data science-toepassingen met MongoDB te werken. MongoDB integreert ook goed met moderne frameworks zoals Django, Flask en Express.js.

Hoe gaat MongoDB om met grootschalige data en horizontale schaalbaarheid?

MongoDB is ontworpen voor horizontale schaalbaarheid via sharding, waarbij data over meerdere servers wordt verdeeld om grootschalige data efficiënt te beheren. Naarmate je data groeit, kan MongoDB de belasting over meerdere machines verdelen, wat zorgt voor betere prestaties en capaciteit. Dit maakt MongoDB ideaal voor bigdata-applicaties of applicaties met snelle groei in datavolume.

Kan MongoDB complexe query’s aan zoals SQL-databases?

Ja, MongoDB kan complexe query’s aan, maar de querytaal (MQL, MongoDB Query Language) verschilt behoorlijk van SQL. MongoDB ondersteunt filters, projecties, logische operatoren en aggregaties om geavanceerde query’s uit te voeren, zodat je data kunt ophalen, filteren en transformeren. In tegenstelling tot SQL-databases ondersteunt MongoDB joins echter niet op dezelfde manier; het is ontworpen om data te denormaliseren in flexibele documentstructuren.

Is MongoDB geschikt voor real-time analytics?

MongoDB kan worden gebruikt voor real-time analytics, maar de prestaties hangen sterk af van hoe data is gestructureerd en geïndexeerd. Met krachtige indexering en het aggregatieframework van MongoDB kun je real-time query’s uitvoeren en efficiënt inzichten genereren. Voor complexere analytische taken kun je MongoDB echter integreren met tools zoals Apache Spark of het aggregation framework gebruiken voor grootschalige real-time verwerking.

Welke beveiligingsfuncties heeft MongoDB?

MongoDB biedt verschillende beveiligingsfuncties, waaronder authenticatie, autorisatie (role-based access control), encryptie (tijdens transport en in rust) en auditing. De Enterprise Edition van MongoDB biedt aanvullende beveiligingsfuncties zoals LDAP-integratie en Kerberos-authenticatie voor beveiliging op ondernemingsniveau. Deze functies helpen gevoelige data te beveiligen en te voldoen aan regelgeving.

Kan MongoDB ACID-transacties aan?

Ja, MongoDB ondersteunt ACID-conforme transacties, met name vanaf versie 4.0. Dit maakt multi-documenttransacties mogelijk, vergelijkbaar met die in relationele databases, en waarborgt atomiciteit, consistentie, isolatie en duurzaamheid voor operaties over meerdere documenten of collecties. Dit maakt MongoDB geschikter voor situaties die transactiegaranties vereisen.

Wat is het verschil tussen JSON en BSON in MongoDB?

Hoewel JSON een menselijk leesbaar formaat is dat vaak wordt gebruikt om data te representeren, is BSON (Binary JSON) het opslagformaat van MongoDB. BSON maakt efficiëntere opslag en ophalen van data mogelijk en ondersteunt extra datatypen zoals datums en binaire data, die JSON niet standaard ondersteunt. BSON voegt ook meer metadata toe, wat de performance bij opslag en ophalen van documenten verbetert.


Bexruz (Bex) Tuychiev's photo
Author
Bexruz (Bex) Tuychiev
LinkedIn

Ik ben een contentmaker op het gebied van data science met meer dan 2 jaar ervaring en een van de grootste achterbannen op Medium. Ik schrijf graag uitgebreide artikelen over AI en ML met een vleugje sarcastische stijl, want je moet toch íets doen om ze wat minder saai te maken. Ik heb meer dan 130 artikelen en een DataCamp-cursus gemaakt, en er is nog een nieuwe in de maak. Mijn content is door meer dan 5 miljoen paar ogen gezien, van wie 20k volgers werden op zowel Medium als LinkedIn. 

Onderwerpen
Python
Data-engineering

Begin vandaag nog aan je niet-relationele database-reis op DataCamp!

Cursus

Introductie tot MongoDB in Python

3 uur
24.3K
Leer hoe je flexibel gestructureerde data kunt bewerken en analyseren met MongoDB.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken