Мне нужно удалить группу файлов, хранящихся в GridFS Монго, которые старше указанной даты.Это подразумевает, что мне нужно удалить как из fs.files , так и fs.chunks коллекций.
Я думал о написании функции, которая находит все документы из fs.files , которые соответствуют критериям поиска, выполните итерацию по ним и в цикле удалите все документы из fs.chunks , которые соответствуют значению files_id соответствующего документаоднако в fs.files , согласно документам:
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, подающий консоль?