我需要删除一堆文件,这些文件存储在 Mongo 的 GridFS 中,这些文件早于给定日期。这意味着我需要从fs.files和fs.chunks集合中删除。
我正在考虑编写一个函数,从fs.files中查找与搜索条件匹配的所有文档,遍历它们并在循环中删除fs.chunks中与fs.files中相应文档的files_id值匹配的所有文档,但是,根据文档:
MongoDB 支持对单个文档的原子操作。MongoDB 不支持传统锁定和复杂事务
这让我觉得我建议的方法可能不是正确的。
我知道我可以使用其中一个客户端驱动程序来直接操作 GridFS。例如,使用 PHP 我可以像这样实现它:
<?php
$grid = $db->getGridFS('fs');
$grid->remove(array(
"uploadDate" => array(
'$lt' => new MongoDate(strtotime("2011-02-01 00:00:00"))
)
));
...但是我希望仅使用 mongo 控制台来完成此操作。
那么,删除文件的首选方法是什么,匹配两个集合中fs.files中某个字段的某些条件,使用 mongo 控制台或 JS 文件,提供控制台?