MongoDB удаляет объекты GridFS из оболочки - PullRequest
10 голосов
/ 10 января 2012

У меня есть файлы, хранящиеся в MongoDB с использованием GridFS. Мне нужно удалить некоторые из этих файлов по идентификатору из оболочки JavaScript. Мне нужно удалить один файл, используя его идентификатор. Я подумал, что могу сделать это:

db.fs.files.remove({_id: my_id});

Это работает в некоторой степени; он удаляет файл из коллекции fs.files, но не удаляет сами блоки из коллекции fs.chunks. Я знаю это потому, что проверяю длину обеих коллекций до и после в RockMongo.

Я мог бы просмотреть чанки и удалить те, которые ссылаются на этот файл, но есть ли лучший, встроенный способ сделать это?

Ответы [ 3 ]

22 голосов
/ 19 ноября 2013

Вы можете удалить файл gridFS, удалив как куски, так и файлы из оболочки.например

db['fs.chunks'].remove({files_id:my_id});
db['fs.files'].remove({_id:my_id});

Эти команды сделают такой трюк.

12 голосов
/ 10 января 2012

Вместо этого вы хотите использовать db.fs.delete(_id);.

Обновление Извините, очевидно, что не работает из оболочки, только через драйвер.GridFS - это спецификация хранилища, реализованная драйверами.Похоже, что он не имеет много встроенных функций из оболочки, как таковой.

Обновление 2 Существует также инструмент командной строки, mongofiles (http://www.mongodb.org/display/DOCS/GridFS+Tools),, которыйпозволяет удалять файлы по имени . mongofiles delete <filename>. Он поставляется с предупреждением, что удалит все файлы с этим именем, поэтому он не такой гранулированный, как по идентификатору.

3 голосов
/ 14 мая 2013
mongofiles --host localhost:30000 --db logo delete logo_susan1225.png

см. Эту страницу: http://docs.mongodb.org/manual/reference/program/mongofiles/#bin.mongofiles

...