我使用GridFS将文件存储在MongoDB中。我需要从JavaScript shell中删除ID中的一些文件。我需要使用它的ID删除单个文件。我想我可以这样做:
db.fs.files.remove({_id: my_id});
这在某种程度上有效;它会从fs.files
集合中删除该文件,但不会从fs.chunks
集合中删除块本身。我知道的原因是因为我在RockMongo之前和之后检查了两个集合的长度。
我可以浏览一下块并删除那些引用该文件的内容,但是有更好的内置方式吗?
答案 0 :(得分:22)
您可以通过删除shell中的块和文件来删除gridFS文件。例如
db['fs.chunks'].remove({files_id:my_id});
db['fs.files'].remove({_id:my_id});
这些命令会做这样的伎俩。
答案 1 :(得分:12)
您想改用db.fs.delete(_id);
。
<强>更新强> 对不起,这显然无法从shell中运行,只能通过驱动程序。 GridFS是驱动程序实现的存储规范。看起来它没有shell的内置功能,因此。
更新2 还有一个命令行工具mongofiles(http://www.mongodb.org/display/DOCS/GridFS+Tools),可让您删除按名称的文件。 mongofiles delete <filename>
。它附带一个警告,它将删除该名称下的所有文件,因此它不像id那样精细。
答案 2 :(得分:3)
mongofiles --host localhost:30000 --db logo delete logo_susan1225.png
参考此页面: http://docs.mongodb.org/manual/reference/program/mongofiles/#bin.mongofiles