在使用 mongo gem 的 ruby 中,我找不到任何关于如何使用 GridFs 查找文件名的文档。
问问题
1136 次
1 回答
7
首先获取到数据库的连接,我们将调用它db
。然后你可以连接到你的 GridFS 作为Mongo::Grid或Mongo::GridFileSystem实例:
fs = Mongo::Grid.new(db)
fs = Mongo::GridFileSystem.new(db)
现在你可以使用Mongo::GridExt::InstanceMethods方法了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
上面将是一个Mongo ::Collection,因此它的find
方法接受所有常见的查询选项。
于 2012-03-13T07:45:26.000 回答