#mongodb
#mongodb
Вопрос:
Я знаю, что могу установить индекс TTL для коллекции файлов, используя:
db.files.ensureIndex({"uploadDate" : 1},{expireAfterSeconds : XXX})
Проблема в том, что он не обрабатывает коллекцию db.chunks.
Таким образом, я могу создать фоновое задание, которое будет проходить через db.chunks и искать сирот, но это упускает суть, поскольку, если у меня должно быть фоновое задание, я мог бы просто позволить ему выполнять всю работу, и, вероятно, это было бы даже быстрее (я могу легче выполнять массовое удаление из блоков).
Итак, есть ли какой-нибудь более разумный способ архивирования удаления файлов из GridFS по истечении заданного периода времени?
Спасибо
Комментарии:
1. Индексы TTL зависят от наличия поля типа «Дата» для проверки запланированного процесса по умолчанию. Поскольку в коллекции «chunks» этого нет, ваше удаление выполняется вручную. Вы можете создать свое собственное расписание для этого. Но MongoDB не поддерживает «ссылочную целостность» по своей конструкции. Я публикую это как комментарий, потому что это действительно не должно требовать ответа, чтобы помочь другим в будущем. Я ожидаю, что кто-то ответит примерно так же, если вы не решите удалить.
2. Существует фундаментальная разница между архивированием и удалением документов. Пожалуйста, укажите ваш фактический вариант использования (язык программирования, фреймворк, бизнес-логика), чтобы мы могли вам помочь.
3. @MarkusWMahlberg — Почему? будет ли это перемещать данные в другую коллекцию хранилище или полностью удалять их — оба действия требуют какой-то операции пометки и развертки.
4. @NeilLunn — я знаю, что в коллекции chunks нет поля даты, вопрос в том, нет ли способа создать метод js, который инфраструктура TTL будет использовать как часть операции развертки
5. Функциональность TTL — это процесс, который сканирует известные индексы на предмет определения этого свойства «expires». Для этого требуется, чтобы в ссылочном поле присутствовал «тип даты». Как уже говорилось, все, что выходит за рамки этой функциональности, является вашим собственным запланированным обслуживанием кода. И я уже заявлял, что в существующей документации это совершенно ясно, поэтому формат не является ответом. Ответы на вопросы должны обеспечить будущее использование. То, что вы спрашиваете, можно определить, прочитав документацию.