ユースケースで複数のドキュメントにまたがるトランザクションが必要な場合、MongoDBは通常、複数のドキュメントが影響を受ける場合にアトミック操作をサポートしないため、これには適していません。
考えられる回避策は、two-phase-commit です。 モデル。
これは基本的に、最初に各ドキュメントに実行したいことの説明を追加フィールドとして追加することを意味します。次に、各ドキュメントに対してアトミック操作を実行し、そのアクションを適用して説明を削除します。これらの各ステップは、後でドキュメントをクエリすることによって確認され、トランザクションの各ステップは、保留中のトランザクションの追加コレクションの3番目のドキュメントによって文書化されます。これにより、保留中のトランザクションを確認してロールバックできます。
この方法は実装が難しく、かなりのオーバーヘッドがあります。これを実装する前に、ネイティブトランザクションをサポートするデータベースシステムを使用しない正当な理由があるかどうかを実際に検討する必要があります。