コメントにも記載されているように、トランザクションのリファレンスは node-mongodb-native v3.1 API ClientSession 。これは、トランザクションがセッションに関連付けられているためです。つまり、セッションのトランザクションを開始します。いつでも、セッションに対して最大で1つのオープントランザクションを持つことができます。
MongoDBマルチドキュメントトランザクション
のドキュメント Node.js
の例も含まれています コードスニペット。例:
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;
}
上記のメソッドのリファレンスは、次の場所にあります。
- ClientSession.startTransaction()>
- ClientSession.commitTransaction()>
- ClientSession.abortTransaction()>
MongoDB Node.jsドライバーv3.1に加えて、マルチドキュメントトランザクションがレプリカセットで利用可能であることに注意してください。 MongoDBv4.0.xでのみ。シャードクラスターのトランザクションは、バージョンv4.2以降で使用できます。