MongoDB biedt transactieondersteuning voor multi-document lees- en schrijfbewerkingen. Het isolatieniveau van transacties wordt bepaald door het gebruik van de `readConcern` en `writeConcern` opties.
`readConcern`: Het niveau van isolatie voor leesoperaties kan worden geconfigureerd door de readConcern-optie in te stellen tijdens het starten van een transactie. Hier is een voorbeeld:
```
session.startTransaction( { readConcern: { level: “snapshot” } } );
```
Er zijn verschillende niveaus van `readConcern` die beschikbaar zijn:
- “local” (standaard): Geeft de meest recente gegevens weer, inclusief gegevens die zijn gewijzigd in dezelfde transactie.
- “majority”: alleen gegevens die zijn bevestigd door een meerderheid van replicasetleden zijn zichtbaar.
- “snapshot”: geeft de gegevens weer zoals ze waren aan het begin van de transactie.
`writeConcern`: het niveau van bevestiging voor schrijfbewerkingen kan worden geconfigureerd door de writeConcern-optie in te stellen bij het plegen van een transactie. Hier is een voorbeeld:
```
session.commitTransaction( { writeConcern: { w: “majority” } } );
```
Er zijn verschillende niveaus van `writeConcern` die beschikbaar zijn:
- w: dit bepaalt het aantal exemplaren van de gegevens die moeten worden bevestigd voordat de write wordt geretourneerd als succesvol. Dit kan een getal zijn, of “majority” voor een meerderheid van replicasetleden.
- j: dit kan worden ingesteld op true om te vereisen dat gegevens naar de journal worden geschreven voordat de write als succesvol wordt beschouwd.
- wtimeout: dit is een tijdslimiet voor hoe lang het systeem wacht op bevestiging van de write.
Belangrijk is om te weten dat MongoDB-transacties een prestatie-impact hebben, dus ze moeten met voorzichtigheid worden gebruikt en alleen wanneer meer dan één document moet worden gewijzigd in een single atomic operation.