Jak wspomniano w komentarzu, możesz znaleźć odniesienie do transakcji na node-mongodb-native v3.1 API ClientSession . Dzieje się tak, ponieważ transakcje są powiązane z sesją. Oznacza to, że rozpoczynasz transakcję dla sesji. W dowolnym momencie możesz mieć co najwyżej jedną otwartą transakcję na sesję.
Dokumentacja Transakcje wielodokumentowe MongoDB
zawiera również przykłady Node.js
fragmenty kodu. Na przykład:
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;
}
Odniesienia do powyższych metod można znaleźć pod adresem:
Należy pamiętać, że oprócz sterownika MongoDB Node.js w wersji 3.1, transakcje obejmujące wiele dokumentów są dostępne dla zestawów replik tylko w MongoDB v4.0.x. Transakcje dla klastrów podzielonych na fragmenty są dostępne od wersji v4.2.