Classificação: Mongo::Grid::FSBucket
- Herda:
-
Objeto
- Objeto
- Mongo::Grid::FSBucket
- Estendido por:
- Encaminhável
- Definido em:
- test
Visão geral
Representa uma visualização do GridFS no banco de dados.
Definido sob namespace
Módulos: Fluxo
Colapsode resumo constante
- DEFAULT_ROOT =
O prefixo raiz padrão.
'fs'- CUNKS_INDEX =
A especificação do índice da collection de chunks.
{ arquivos_id: 1, n: 1 }.congelar
- FILES_INDEX =
A especificação do índice da coleção de arquivos.
{ nome do arquivo: 1, uploadDate: 1 }.congelar
Recolhimento do Resumo do atributo de instância
-
#chunks_collection ⇒ Collection
Somente leitura
Chunks_collection A collection de chunks.
-
#database ⇒ Database
Somente leitura
Database The database.
-
#files_collection ⇒ Collection
Somente leitura
Files_collection A collection de arquivos.
-
#opções ➤ Hash
Somente leitura
Opções As opções do FSBucket.
Recolhimento do Resumo do método de instância
-
#delete(ID, opts = {}) ⇒ Resultado
Remova um único arquivo, identificado por seu ID do GridFS.
-
#delete_one(file, opts = {}) ➤ Resultado
Remova um único arquivo do GridFS.
-
#download_to_stream(ID,io) ➤ Objeto
Baixa o conteúdo do arquivo especificado por ID e o grava no objeto io de destino.
-
#download_to_stream_by_name(filename, io, opts = {}) ➤ Object
Baixa o conteúdo do arquivo armazenado especificado pelo nome do arquivo e pela revisão nas opções e grava o conteúdo no objeto io de destino .
-
#descartar(opts = {}) ➤ Objeto
Solte as coleções que implementam esse bloco.
-
#find(selector = nil, options = {}) ➤ CollectionView
Encontre documentos de coleção de arquivos correspondentes a um determinado seletor.
-
#find_one(selector = nil) ➤ Grid::File
obsoleto
Obsoleto.
Em vez disso, use #find com um limite de -1. Será removido na versão 3.0.
-
#initialize(database, options = {}) ⇒ FSBucket
construtor
Crie o GridFS.
-
#insert_one(file) ⇒ BSON::ObjectId
obsoleto
Obsoleto.
Em vez disso, use #upload_from_stream ou #open_upload_stream. Será removido na versão 3.0.
-
#open_download_stream(ID, options = nil) {|The| ... } ➤ Stream::Leia
Abre um fluxo do qual um arquivo pode ser baixado, especificado por ID.
-
#open_download_stream_by_name(nome do arquivo, opções = {}) {|The| ... } ➤ Stream::Leia
Abre um fluxo do qual o aplicação pode ler o conteúdo do arquivo armazenado especificado pelo nome do arquivo e a revisão nas opções.
-
#open_upload_stream(filename, opts = {}) {|The| ... } ⇒ Stream::Write
Abre um fluxo de carregamento para o GridFS no qual o conteúdo de um arquivo ou blob pode ser gravado.
-
#prefixo ➤ string
Obtenha o prefixo do GridFS.
-
#read_preference ➤ BSON::Document
Obtenha a read preference.
-
#upload_from_stream(filename, io, opts = {}) ➤ BSON::ObjectId
Carrega um arquivo de usuário em um bucket GridFS .
-
#write_concern ➤ Mongo::WriteConcern
Obtenha a preocupação de gravação.
Detalhes do construtor
#initialize(database, options = {}) ⇒ FSBucket
Crie o GridFS.
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 68 def inicializar(database, = {}) @database = database @opções = .dup # Suporte ao objeto WriteConcern # if @options[:write_concern].is_a?(WriteConcern::Base) # # Cache a instância para que não a reconstruímos desnecessariamente. # @write_concern = @options[:write_concern] # @options[:write_concern] = @write_concern.options # end @opções.congelar @chunks_collection = database[chunks_name] @files_collection = database[file_name] end |
Detalhes do atributo da instância
#chunks_collection ➤ Collection (somente leitura)
Retorna chunks_collection A collection de chunks.
85 86 87 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 85 def chunks_collection @chunks_collection end |
#database ⇒ Database (readonly)
Retorna banco de dados O banco de dados.
90 91 92 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 90 def database @database end |
#arquivos_collection ➤ Coleção (somente leitura)
Retorna arquivos_coleção A coleção de arquivos.
95 96 97 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 95 def file_collection @files_collection end |
#opções ➤ Hash (somente leitura)
Retorna as opções As opções do FSBucket.
100 101 102 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 100 def @opções end |
Detalhes do método de instância
#delete(ID, opts = {}) ⇒ Resultado
Remova um único arquivo, identificado por seu ID do GridFS.
218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 218 def excluir(id, opciona = {}) timeout_holder = CsotTimeoutHolder.Novo(operation_timeouts: operation_timeouts(opciona)) Resultado = file_collection .find({ _id: id }, @opções.mesclar(timeout_ms: timeout_holder.remaining_timeout_ms)) .delete_one(timeout_ms: timeout_holder.remaining_timeout_ms) chunks_collection .find({ arquivos_id: id }, @opções.mesclar(timeout_ms: timeout_holder.remaining_timeout_ms)) .delete_many(timeout_ms: timeout_holder.remaining_timeout_ms) aumentar Erro::FileNotFound.Novo(id, :id) se Resultado.n == 0 Resultado end |
#delete_one(file, opts = {}) ➤ Resultado
Remova um único arquivo do GridFS.
202 203 204 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 202 def delete_one(file, opciona = {}) excluir(file.id, opciona) end |
#download_to_stream(ID,io) ➤ Objeto
Baixa o conteúdo do arquivo especificado por ID e o grava no objeto io de destino.
270 271 272 273 274 275 276 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 270 def download_to_stream(id, io) open_download_stream(id) fazer |fluxo| fluxo.cada fazer |chunk| io << chunk end end end |
#download_to_stream_by_name(filename, io, opts = {}) ➤ Object
Baixa o conteúdo do arquivo armazenado especificado pelo nome do arquivo e pela revisão nas opções e grava o conteúdo no objeto io de destino .
Os números de revisão são definidos da seguinte forma: 0 = o arquivo original armazenado 1 = a primeira revisão 2 = a segunda revisão etc. -2 = a segunda revisão mais recente -1 = a revisão mais recente
@ exemplo Baixe o arquivo original.
fs.download_to_stream_by_name(' some-file.txt', io, revisão: 0)
364 365 366 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 364 def download_to_stream_by_name(Nome do Arquivo, io, opciona = {}) download_to_stream(open_download_stream_by_name(Nome do Arquivo, opciona).file_id, io) end |
#descartar(opts = {}) ➤ Objeto
Solte as coleções que implementam esse bloco.
491 492 493 494 495 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 491 def derrubar(opciona = {}) Contexto = (operação)::Contexto.Novo(operation_timeouts: operation_timeouts(opciona)) file_collection.derrubar(timeout_ms: Contexto.remaining_timeout_ms) chunks_collection.derrubar(timeout_ms: Contexto.remaining_timeout_ms) end |
#find(selector = nil, options = {}) ➤ CollectionView
Encontre documentos de coleção de arquivos correspondentes a um determinado seletor.
131 132 133 134 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 131 def find(seletor = nada, = {}) opciona = .mesclar(ler: read_preference) se read_preference file_collection.find(seletor, opciona || ) end |
#find_one(selector = nil) ➤ Grid::File
Em vez disso, use #find com um limite de -1. Será removido na versão 3.0.
Encontre um arquivo no GridFS.
152 153 154 155 156 157 158 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 152 def find_one(seletor = nada) file_info = file_collection.find(seletor).primeiro Método nada a menos que file_info Partes = chunks_collection.find(arquivos_id: file_info[:_id]).sort(n: 1) Grade::arquivo.Novo(Partes.to_a, Opções::Mapeador.transformação, transformação(file_info, Grade::arquivo::informações::mapeamentos.inverter)) end |
#insert_one(file) ⇒ BSON::ObjectId
Em vez disso, use #upload_from_stream ou #open_upload_stream. Será removido na versão 3.0.
Insira um único arquivo no GridFS.
173 174 175 176 177 178 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 173 def insert_one(file) @indexes ||= ensure_indexes! chunks_collection.insert_many(file.Partes) file_collection.insert_one(file.informações) file.id end |
#open_download_stream(ID, options = nil) {|The| ... } ➤ Stream::Leia
Abre um fluxo do qual um arquivo pode ser baixado, especificado por ID.
247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 247 def open_download_stream(id, = nada) = Utilidades.raso_symbolize_keys( || {}) read_stream(id, **).toque fazer |fluxo| se block_given? começar rendimento fluxo garantir fluxo.Fechar end end end end |
#open_download_stream_by_name(nome do arquivo, opções = {}) {|The| ... } ➤ Stream::Leia
Abre um fluxo do qual o aplicação pode ler o conteúdo do arquivo armazenado especificado pelo nome do arquivo e a revisão nas opções.
Os números de revisão são definidos da seguinte forma: 0 = o arquivo original armazenado 1 = a primeira revisão 2 = a segunda revisão etc. -2 = a segunda revisão mais recente -1 = a revisão mais recente
@ exemplo Abrir um fluxo para baixar o arquivo original.
fs.open_download_stream_by_name(' some-file.txt', revisão: 0)
312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 312 def open_download_stream_by_name(Nome do Arquivo, opciona = {}, &noum: bloco ; verb: bloquear) revisão = opciona.buscar(:revision, -1) se revisão < 0 ignorar = revisão.abs - 1 sort = { 'uploadDate' => mongo::Index::Descendente } mais ignorar = revisão sort = { 'uploadDate' => mongo::Index::Ascendente } end file_info_doc = file_collection.find({ nome do arquivo: Nome do Arquivo }, sort: sort, pular: ignorar, limit: -1).primeiro a menos que file_info_doc aumentar Erro::FileNotFound.Novo(Nome do Arquivo, :filename) a menos que opciona[:revision] aumentar Erro::InvalidFileRevision.Novo(Nome do Arquivo, opciona[:revision]) end open_download_stream(file_info_doc[:_id], file_info_doc: file_info_doc, &noum: bloco ; verb: bloquear) end |
#open_upload_stream(filename, opts = {}) {|The| ... } ⇒ Stream::Write
Abre um fluxo de carregamento para o GridFS no qual o conteúdo de um arquivo ou blob pode ser gravado.
394 395 396 397 398 399 400 401 402 403 404 405 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 394 def open_upload_stream(Nome do Arquivo, opciona = {}) opciona = Utilidades.raso_symbolize_keys(opciona) write_stream(Nome do Arquivo, **opciona).toque fazer |fluxo| se block_given? começar rendimento fluxo garantir fluxo.Fechar end end end end |
#prefixo ➤ string
Obter o prefixo do GridFS
188 189 190 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 188 def prefix @opções[:fs_name] || @opções[:bucket_name] || DEFAULT_ROOT end |
#read_preference ➤ BSON::Document
Esse método sempre retorna uma instância BSON::Document, mesmo que o construtor FSBucket especifique o tipo de :read como um Hash, não como um BSON::Document.
Obtenha a read preference.
463 464 465 466 467 468 469 470 471 472 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 463 def read_preference @read_preference ||= começar pref = [:read] || database.read_preference se pref.is_a?(BSON::Documento) pref mais BSON::Documento.Novo(pref) end end end |
#upload_from_stream(filename, io, opts = {}) ⇒ BSON::ObjectId
Carrega um arquivo de usuário em um bucket GridFS . Lê o conteúdo do arquivo do usuário a partir do fluxo de origem e o carrega como blocos na coleção de blocos. Depois que todos os chunks tiverem sido carregados, ele criará um documento de coleção de arquivos para o nome do arquivo na coleção de arquivos.
435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 435 def upload_from_stream(Nome do Arquivo, io, opciona = {}) open_upload_stream(Nome do Arquivo, opciona) fazer |fluxo| fluxo.escrever(io) # IOError e SystemCallError são para erros ao ler o io. # Erro::SocketError e Erro::SocketTimeoutError são para # escrita no MongoDB. salvar IOError, SystemCallError, Erro::Erro de soquete, Erro::SocketTimeoutError começar fluxo.abortar salvar Erro::Falha de operação end aumentar end.file_id end |
#write_concern ➤ Mongo::WriteConcern
Obtenha a preocupação de gravação.
482 483 484 485 486 487 488 |
# File 'lib/mongo/grid/fs_bucket.rb', linha 482 def write_concern @write_concern ||= se wco = @opções[:write_concern] || @opções[:write] Escreva preocupação.obter(wco) mais database.write_concern end end |