使用Ruby检索MongoDB GridFS文件

使用Ruby检索MongoDB GridFS文件,ruby,mongodb,gridfs,Ruby,Mongodb,Gridfs,我正在尝试检索使用GridFS成功存储的二进制文件。 我正在Mac OS X上使用MongoDB v3.0.6、Ruby 2.0.0和MongoDB Ruby驱动程序V2.0.1 有一个有效的例子吗?查看文档,似乎应该这样做: client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'music') client.database.fs.find_one(:filename => 'new-file.txt') #

我正在尝试检索使用GridFS成功存储的二进制文件。 我正在Mac OS X上使用MongoDB v3.0.6、Ruby 2.0.0和MongoDB Ruby驱动程序V2.0.1


有一个有效的例子吗?

查看文档,似乎应该这样做:

client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'music')
client.database.fs.find_one(:filename => 'new-file.txt') #=> Returns a Mongo::Grid::File
以下是如何将其流式传输到文件:

client.database.fs.open_download_stream(file_id) do |stream|
  IO.write('some-file', stream.read)
end

以下代码起作用:

require 'rubygems'
require 'mongo'
include Mongo

$client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'garden')
Mongo::Logger.logger.level = ::Logger::ERROR
$files = $client[:files]

puts 'connected!'

# Upload file
fs = $client.database.fs 
$file = File.open("delete.rb")
$file_id = fs.upload_from_stream("delete.rb", $file)
$file.close

$file_to_write = File.open('perfectCopy', 'w')
fs.download_to_stream($file_id, $file_to_write)

Mihalis.

这将返回一个Mongo::Grid::File变量。我想得到实际存储的文件。到目前为止,我一点运气都没有。你说“得到”它是什么意思…?保存实际的文件。它已经保存了。如果需要,可以将其流式传输到另一个文件?如何?我正在寻找这样做的Ruby代码(使用MongoDB Ruby驱动程序v2.0.1)。