Ruby GridFS - 在文件名上搜索

Mik*_*ike 2 ruby mongodb gridfs

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

mu *_*ort 6

首先获得与数据库的连接,我们将其称之为db.然后,您可以作为Mongo :: GridMongo :: GridFileSystem实例连接到GridFS:

fs = Mongo::Grid.new(db)
fs = Mongo::GridFileSystem.new(db)
Run Code Online (Sandbox Code Playgroud)

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

f = fs.exist? :filename => 'pancakes.png'
Run Code Online (Sandbox Code Playgroud)

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 ...
Run Code Online (Sandbox Code Playgroud)

fs上面的将是一个蒙戈::收集所以它的find方法接受所有常用的查询选项.