MongoDB从shell中删除GridFS对象

Ale*_*pin 11 javascript shell mongodb gridfs

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

db.fs.files.remove({_id: my_id});
Run Code Online (Sandbox Code Playgroud)

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

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

Xen*_*noN 23

您可以通过删除shell中的块和文件来删除gridFS文件.例如

db['fs.chunks'].remove({files_id:my_id});
db['fs.files'].remove({_id:my_id});
Run Code Online (Sandbox Code Playgroud)

那些命令会做这样的伎俩.


Eve*_*man 13

你想要db.fs.delete(_id);改用.

更新 抱歉,这显然无法从shell中运行,只能通过驱动程序.GridFS是驱动程序实现的存储规范.看起来它没有shell的内置功能,因此.

更新2还有一个命令行工具mongofiles(http://www.mongodb.org/display/DOCS/GridFS+Tools),它允许您按名称删除文件.mongofiles delete <filename>.它附带一个警告,它将删除该名称的所有文件,因此它不像id那样精细.

  • 你需要通过shell做到这一点吗?为什么不用您选择的语言连接驱动程序?不,据我所知,可以做一些像`db.fs.chunks.remove({files_id:my_id});`然后`db.fs.files.remove({_ id:my_id}) ;` (4认同)