MongoDB从shell中删除GridFS对象

时间:2012-01-09 20:20:35

标签: javascript shell mongodb gridfs

我使用GridFS将文件存储在MongoDB中。我需要从JavaScript shell中删除ID中的一些文件。我需要使用它的ID删除单个文件。我想我可以这样做:

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

这在某种程度上有效;它会从fs.files集合中删除该文件,但不会从fs.chunks集合中删除块本身。我知道的原因是因为我在RockMongo之前和之后检查了两个集合的长度。

我可以浏览一下块并删除那些引用该文件的内容,但是有更好的内置方式吗?

3 个答案:

答案 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