MongoDB удаляет объекты GridFS из оболочки
У меня есть файлы, хранящиеся в MongoDB с использованием GridFS. Мне нужно удалить некоторые из этих файлов по ID из оболочки JavaScript. Мне нужно удалить один файл, используя его ID. Я решил, что могу просто сделать это:
db.fs.files.remove({_id: my_id});
Это работает в некоторой степени; он удаляет файл из коллекции fs.files
, но не удаляет куски из коллекции fs.chunks
. Причина, по которой я знаю, потому что я проверяю длину обеих коллекций до и после в RockMongo.
Я мог бы пройти через куски и удалить те, которые относятся к этому файлу, но есть ли лучший, встроенный способ сделать это?
Ответы
Ответ 1
Вместо этого вы хотите использовать db.fs.delete(_id);
.
Обновление
Извините, это, видимо, не работает из оболочки, только через драйвер. GridFS - это спецификация для хранения, реализованная драйверами. Похоже, у него нет встроенной функциональности из оболочки, как таковой.
Обновление 2 Существует также инструмент командной строки, mongofiles (http://www.mongodb.org/display/DOCS/GridFS+Tools), который позволяет вам удалять файлы по имени. mongofiles delete <filename>
. Он приходит с предупреждением о том, что он удалит все файлы с помощью этого имени, поэтому он не будет таким же подробным, как по id.
Ответ 2
Вы можете удалить файл gridFS, удалив оба куска и файлы из оболочки. например
db['fs.chunks'].remove({files_id:my_id});
db['fs.files'].remove({_id:my_id});
Эти команды будут делать такой трюк.
Ответ 3
mongofiles --host localhost: 30000 --db logo удалить logo_susan1225.png
обратитесь к этой странице:
http://docs.mongodb.org/manual/reference/program/mongofiles/#bin.mongofiles