SQL ステートメントを使用して MongoDB にトランザクション処理を実装するにはどうすればよいですか?
要約: 非リレーショナル データベースとして、MongoDB はその高いパフォーマンスとスケーラビリティで常に知られています。ただし、トランザクション処理を必要とするアプリケーションの場合、MongoDB は以前のバージョンではトランザクション機能をサポートしていませんでした。ただし、MongoDB バージョン 4.0 からは、SQL ステートメントを使用してトランザクション処理を実装できる、マルチドキュメント ACID トランザクションと呼ばれる機能が導入されました。この記事では、MongoDB で SQL ステートメントによるトランザクション処理を実装する方法を詳しく紹介し、具体的なコード例を示します。
2.1 トランザクションの作成
トランザクションを開始する前に、まずセッション (セッション) を作成する必要があります。 ). このセッションは、後続のトランザクション操作に使用されます。セッションを作成するコード例は次のとおりです。
var session = db.getMongo().startSession();
2.2 トランザクションの開始
セッションを作成した後、BEGIN TRANSACTION ステートメントを実行して新しいトランザクションを開始できます。コード例は次のとおりです。
session.startTransaction();
2.3 トランザクション操作の実行
トランザクションでは、複数の SQL ステートメントを実行してビジネス ロジックを実装できます。たとえば、トランザクションに 2 つのレコードを挿入する必要がある場合のコード例は次のとおりです。
session.getDatabase('test').users.insert({name: '张三', age: 25}); session.getDatabase('test').users.insert({name: '李四', age: 30});
2.4 トランザクションを送信またはロールバックする
すべてのトランザクション操作が実行された後、コミットまたはロールバックを選択できます。トランザクションをロールバックします。すべてのトランザクション操作が正常に実行された場合は、COMMIT ステートメントを使用してトランザクションをコミットできます。コード例は次のとおりです。
session.commitTransaction();
トランザクションの実行中にエラーまたは例外が発生した場合、ROLLBACK ステートメントを使用してトランザクションをロールバックできます。コード例は次のとおりです。
session.abortTransaction();
2.5 トランザクションとセッションの終了
トランザクションをコミットまたはロールバックした後、END TRANSACTION ステートメントを使用してトランザクションを終了できます。同時にセッションも終了する必要があります。コード例は次のとおりです。
session.endSession();
var session = db.getMongo().startSession(); session.startTransaction(); try { var fromAccount = session.getDatabase('bank').accounts.findOne({accountNumber: '123456'}); var toAccount = session.getDatabase('bank').accounts.findOne({accountNumber: '654321'}); var amount = 100; if (fromAccount.balance >= amount) { session.getDatabase('bank').accounts.updateOne({accountNumber: '123456'}, {$inc: {balance: -amount}}); session.getDatabase('bank').accounts.updateOne({accountNumber: '654321'}, {$inc: {balance: amount}}); } else { throw new Error('Insufficient balance'); } session.commitTransaction(); } catch (error) { session.abortTransaction(); print('Transaction failed: ' + error); } finally { session.endSession(); }
上の例では、最初にセッションを作成してから、新しいトランザクションを開始します。その後、送金元口座と送金先口座に基づいて口座情報が取得されます。ソース口座の残高が十分な場合、転送操作が実行され、口座残高が更新されます。最後に、トランザクションを送信することで、転送プロセス全体が完了します。
概要: SQL ステートメントを使用して MongoDB にトランザクション処理を実装すると、ドキュメント間の操作がより便利になります。 MongoDB は非リレーショナルデータベースですが、Multi-Document ACID Transactions 機能を導入することで、SQL ステートメントを使用してトランザクション処理を実装できます。コード例では、MongoDB の公式ドライバーを使用して SQL ステートメントを実行していますが、他のサードパーティ ツールを使用してこれを実現することもできます。
以上がSQL ステートメントを使用して MongoDB にトランザクション処理を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。