Ruby GridFS - Поиск по имени файла - PullRequest
2 голосов
/ 13 марта 2012

В рубине, использующем монго, я не могу найти документацию о том, как найти имя файла с помощью GridFs.

1 Ответ

6 голосов
/ 13 марта 2012

Сначала получите соединение с базой данных , мы назовем это 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 метод принимает все обычные параметры запроса.

...