在使用mongo gem的ruby中,我找不到任何关于如何使用GridFs查找文件名的文档。
答案 0 :(得分:6)
首先get a connection to the database,我们称之为db
。然后,您可以作为Mongo::Grid或Mongo::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接受所有常用的查询选项。