Zoals ook vermeld in de opmerking, kun je de referentie voor transacties vinden op node-mongodb-native v3.1 API ClientSession . Dit komt omdat transacties aan een sessie zijn gekoppeld. Dat wil zeggen, u start een transactie voor een sessie. U kunt op elk moment maximaal één openstaande transactie voor een sessie hebben.
De documentatie voor MongoDB multi-document transacties
bevat ook voorbeelden Node.js
code fragmenten. Bijvoorbeeld:
session.startTransaction({
readConcern: { level: 'snapshot' },
writeConcern: { w: 'majority' }
});
const employeesCollection = client.db('hr').collection('employees');
const eventsCollection = client.db('reporting').collection('events');
await employeesCollection.updateOne(
{ employee: 3 },
{ $set: { status: 'Inactive' } },
{ session }
);
await eventsCollection.insertOne(
{
employee: 3,
status: { new: 'Inactive', old: 'Active' }
},
{ session }
);
try {
await commitWithRetry(session);
} catch (error) {
await session.abortTransaction();
throw error;
}
De referentie voor de bovenstaande methoden is te vinden op:
Houd er rekening mee dat, naast MongoDB Node.js-stuurprogramma v3.1, transacties met meerdere documenten beschikbaar zijn voor replicasets alleen op MongoDB v4.0.x. Transacties voor shard-clusters zijn beschikbaar vanaf versie v4.2.