オブジェクトのコレクションを含む開発サーバーがあります。これらのオブジェクトの実際の蓄積は進行中のプロセスであり、このローカル開発サーバーでラベル付け、検証などのプロセス全体を実行します。これらのオブジェクトは本番環境で使用できるようになると、本番データベースに追加され、その瞬間から計算に使用されます。
他のすべてのコレクションと同じコレクション内の古いオブジェクトをそのまま保持しながら、デルタ (新しいオブジェクト) を本番 DB に単純に追加する方法を探しています。これまでは MySql を使用していたため、このプロセスでは DB 構造の実行とデータ同期が必要でした (そのために Navicat を使用しました)。現在、MongoDB に移行しているため、このプロセスは少し複雑です。
私はこれを調べましたが、次の解決策は私のニーズに合わないと思います:
- dev DB をダンプし、 thenを使用して Production DB にロードする
mongodump
mongorestore
- 実行中
db.copyDatabase
- 実際には運用データベースを開発 DB のコピーに置き換えます。
どちらのソリューションも、既存のコレクション内のオブジェクトを更新するだけの場合に、実際には Production DB を置き換えるため、問題があります。また、Dev => Production に移行すると、Master-Slave トポロジーに適合しません。
私が考えることができる最善のことは、次のことです。
- dev DB を本番インスタンスの「dev」DB にコピーします。
- この開発用 DB から実際の運用 DB にコレクションをコピーし、このソリューションと同様に、運用 DB に存在しないオブジェクトのみを追加するという述語を追加します。
誰かがより良い解決策を持っているかどうか疑問に思っていましたか?
そうでない場合、これを実行できるスクリプトを持っている人はいますか?