導入アーキテクチャはどのようなものですか? 「複数のサーバー」と言うとき、私は少し混乱しています-複数のmongodインスタンスを意味しますか? また、要件を指定するときに少し混乱します。要件 1 に従って、S3 にアップロードする場合、gridfs ファイルを削除する必要があります。ただし、要件によると、S3 と Gridfs の両方に存在することはできないため、要件 2 は最初の要件と矛盾しているようです。つまり、そもそも gridfs に存在するべきではありません。Gridfs と S3 の両方でいくつかのファイルを保存していますか?
レプリカ セットまたはシャード クラスターで実行している場合は、gridfs コレクションにテーラブル カーソルを作成できます (推奨されませんが、単一ノードでこれを行うこともできます)。挿入操作 ('op':'i' のようになります) が表示されたら、スクリプトを実行するか、アプリケーションで何かを実行して、gridfs からファイルを取得し、適切なファイルを s3 にプッシュします。同様に、削除操作 ('op':'d') が表示されると、s3 からファイルをすぐに削除できます。
テーラブル カーソルの利点は、非同期操作が可能になることです。別のサーバーで oplog を監視し、適切なアクションを実行する別のプロセスを持つことができます。