Ruby GridFS - 在文件名上搜索

时间:2012-03-13 07:11:36

标签: ruby mongodb gridfs

在使用mongo gem的ruby中,我找不到任何关于如何使用GridFs查找文件名的文档。

1 个答案:

答案 0 :(得分:6)

首先get a connection to the database,我们称之为db。然后,您可以作为Mongo::GridMongo::GridFileSystem实例连接到GridFS:

fs = Mongo::Grid.new(db)
fs = Mongo::GridFileSystem.new(db)

现在,您可以使用fs上的Mongo::GridExt::InstanceMethods方法。特别是,您可以使用exist?

f = fs.exist? :filename => 'pancakes.png'

exist?方法的命名很差,因为它会在找到某些内容时为您提供哈希值,如果没有则为nil

如果您正在搜索与/pancakes/匹配的所有文件名,那么这并不是非常有用。但是,GridFS只是一对普通的MongoDB集合:

  • fs.files:文件元数据。
  • fs.chunks:文件数据(以块为单位)。

如果您想进行任意元数据搜索,那么您只需要亲自动手fs.files并按照自己的方式使用它:

fs     = db['fs.files']
cursor = fs.find(:filename => /pancakes/)
# Now iterate through cursor or .count it or ...

上面的fs将是Mongo::Collection,因此其find method接受所有常用的查询选项。