2

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

4

1 回答 1

7

首先获取到数据库的连接,我们将调用它db。然后你可以连接到你的 GridFS 作为Mongo::GridMongo::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 回答