如何删除整个gridfs(使用Ruby驱动程序)?

时间:2014-01-07 09:50:36

标签: ruby mongodb gridfs

我正在考虑使用多个gridfs类似的文件夹。这个想法是删除文件夹很容易。只需删除文件系统即可。我只有一个问题。我没有看到任何删除它们的方法?如果删除它们意味着我必须遍历所有这些并逐个删除它们然后这样做是没有意义的。所以如果有更多知识的人可以确认这是否可以做到并且这是一个愚蠢的想法吗?另外,创建一个具有每个“文件/文件夹”的索引等的单独文件系统可能是非常不明智的,因此可能导致创建数千个单独的文件系统...... (但是,不要只是说这是一个愚蠢的想法,它仍然是一个有效的问题,是否可以完成,如果是,如何,即使在我的特定用例中是不明智的。)

以下是我尝试使用ruby驱动程序实现的目标:

file = "some_image.jpg"
grid = Mongo::Grid.new(Mongoid.database, File.join(cache_dir, File.basename(file))
genereate_versions_of(file).each do |version| #e.g. micro.jpg, thumbnail.jpg, large.jpg
  grid.put version
end

#and then later when all of the versions of this file needs to be deleted I'd like
#to do something like this... but it seems it's not possible?
Mongo::Grid.destroy(Mongoid.database, File.join(cache_dir, File.basename(file))
#or
grid = Mongo::Grid.new(Mongoid.database, File.join(cache_dir, File.basename(file))
grid.destroy

1 个答案:

答案 0 :(得分:1)

GridFS只是普通集合之上的抽象层,由两个集合表示:.files和.chunks。您可以删除这两个集合以“删除您的GridFS”。应与File.join(cache_dir, File.basename(file))相同。