指定された日付より古い Mongo の GridFS に保存されている一連のファイルを削除する必要があります。これは、 fs.filesコレクションとfs.chunksコレクションの両方から削除する必要があることを意味します。
検索条件に一致するfs.filesからすべてのドキュメントを見つけ、それらを繰り返し処理し、ループ内で fs.files の対応するドキュメントの files_id 値に一致するすべてのドキュメントを fs.chunks から削除する関数を作成することを考えていましたが、 、ドキュメントによると:
MongoDB は、単一のドキュメントに対するアトミック操作をサポートしています。MongoDB は従来のロックと複雑なトランザクションをサポートしていません
これは、私が提案したアプローチが正しいものではないかもしれないと私に思わせます.
クライアント ドライバーの 1 つを使用して GridFS を直接操作できることはわかっています。たとえば、PHP を使用すると、次のように実装できます。
<?php
$grid = $db->getGridFS('fs');
$grid->remove(array(
"uploadDate" => array(
'$lt' => new MongoDate(strtotime("2011-02-01 00:00:00"))
)
));
...しかし、mongoコンソールのみを使用してこれを達成したいと考えています。
では、 mongo コンソールまたは JS ファイルを使用して、両方のコレクションからfs.filesのフィールドに関する特定の基準に一致し、コンソールにフィードするファイルを削除するための推奨される方法は何ですか?