RubyGridFS-在文件名上搜索

RubyGridFS-在文件名上搜索,ruby,mongodb,gridfs,Ruby,Mongodb,Gridfs,在使用mongo gem的ruby中,我找不到任何关于如何使用GridFs查找文件名的文档。首先,我们称之为db。然后,您可以作为或实例连接到GridFS: fs = Mongo::Grid.new(db) fs = Mongo::GridFileSystem.new(db) 现在您可以使用fs上的方法。特别是,您可以使用exist?: f = fs.exist? :filename => 'pancakes.png' exist?方法的名称很糟糕,因为如果它找到某个东西,它会给你一个

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

首先,我们称之为
db
。然后,您可以作为或实例连接到GridFS:

fs = Mongo::Grid.new(db)
fs = Mongo::GridFileSystem.new(db)
现在您可以使用
fs
上的方法。特别是,您可以使用
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
将是一个函数,因此它接受所有常用的查询选项