だから私は2つのコレクションを持っています、その新しいコレクションと他のコレクションとしましょう.この他のコレクションからまったく新しいコレクションにデータを挿入したいと思いました.他のコレクションには新しい形式のデータに処理できるデータが含まれています.この新しいコレクションに保存されます。このプロセスは一度に実行されます。問題は、Scala MongoDB ドライバーの非同期動作が一種の問題です。データベースに挿入された後に ID が必要だったので、この新しいコレクションを自動インクリメントにしたかったのです。
したがって、明らかなステップは次のようになります。
- Other Collection findAll Observable にサブスクライブし、出力されたデータを取得します
- 新しいコレクションのデータを数えて金額を確認し、1 ずつ増やして、出力されたデータの最後の ID を取得します。
- データの処理 (マッピング、変更など)
- その新しいデータを新しいコレクションに挿入します
問題は、ステップ 2 と 4 の間で、データを挿入する前にレイテンシが発生することです。MongoDB にデータを挿入すると、ID が重複するという例外がスローされることがあるためです。ドキュメントでブロックする方法が見つかりませんでした。
他のスレッドが終了した後にプロセスを開始するように、オブザーバブルをブロックするにはどうすればよいですか?
または、私がやりたいことを行うためのより良い方法はありますか? 私は提案を受け入れます
読書のための参照も歓迎します、ありがとう