Classificação: Mongo::Grid::FSBucket

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Definido em:
build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb,
build/ruby-driver-v2.19/lib/mongo/grid/stream.rb,
build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb,
build/ruby-driver-v2.19/lib/mongo/grid/stream/write.rb

Visão geral

Representa uma visualização do GridFS no banco de dados.

Desde:

  • 2.0.0

Definido sob namespace

Módulos: Fluxo

Colapsode resumo constante

DEFAULT_ROOT =

O prefixo raiz padrão.

Desde:

  • 2.0.0

'fs'.congelar
CUNKS_INDEX =

A especificação do índice da collection de chunks.

Desde:

  • 2.0.0

{ :files_id => 1, :n => 1 }.congelar
FILES_INDEX =

A especificação do índice da coleção de arquivos.

Desde:

  • 2.1.0

{ nome do arquivo: 1, uploadDate: 1 }.congelar

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(database, options = {}) ⇒ FSBucket

Crie o GridFS.

Exemplos:

Crie o GridFS.

Grid::FSBucket.new(database)

Parâmetros:

  • database (Banco de dados)

    O banco de dados de dados em que os arquivos residem.

  • opções (Hash) (padrão para: {})

    As opções do GridFS .

Hash de opções (opções):

  • :bucket_name (string)

    O prefixo para os arquivos e coleções de blocos.

  • :chunk_size (Inteiro)

    Substitua o tamanho padrão do chunk.

  • :fs_name (string)

    O prefixo para os arquivos e coleções de blocos.

  • :read (Hash)

    As opções de read preference. O hash pode ter os seguintes itens:

    • : modo – preferência de leitura especificada como um símbolo; Os valores válidos são :primary, :primary_preferred, :secondary, :secondary_preferred e :nearest.

    • :tag_sets – uma array de hashes.

    • :local_threshold.

  • :session (Sessão)

    A sessão a ser usada.

  • :write (Hash)

    Obsoleto. Equivalente à opção :write_concern.

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro|String, : fsync => Booleano, :j => Booleano.

Desde:

  • 2.0.0



70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 70

def inicializar(database, opções = {})
  @database = database
  @opções = opções.dup
=begin Suporte ao objeto WriteConcern
  se @options[:write_concern].is_a?(WriteConcern::Base)
    # Armazene a instância em cache para que não a reconstruamos desnecessariamente.
    @write_concern = @options[:write_concern]
    @options[:write_concern] = @write_concern.options
  end
=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.

Retorna:

  • (Collection)

    chunks_collection A collection de chunks.

Desde:

  • 2.0.0



88
89
90
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 88

def chunks_collection
  @chunks_collection
end

#databaseDatabase (readonly)

Retorna banco de dados O banco de dados.

Retorna:

Desde:

  • 2.0.0



93
94
95
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 93

def database
  @database
end

#arquivos_collection ➤ Coleção (somente leitura)

Retorna arquivos_coleção A coleção de arquivos.

Retorna:

  • (Collection)

    arquivos_collection A coleção de arquivos.

Desde:

  • 2.0.0



98
99
100
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 98

def file_collection
  @files_collection
end

#opçõesHash (somente leitura)

Retorna as opções As opções do FSBucket.

Retorna:

  • (Hash)

    opções As opções do FSBucket.

Desde:

  • 2.1.0



103
104
105
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 103

def opções
  @opções
end

Detalhes do método de instância

#excluir(ID) ➤ Resultado

Remova um único arquivo, identificado por seu ID do GridFS.

Exemplos:

Remova um arquivo do GridFS.

fs.delete(id)

Parâmetros:

  • id (BSON::ObjectId, Object)

    A ID do arquivo a ser removido.

Retorna:

  • (Resultado)

    O resultado da remoção.

Aumenta:

Desde:

  • 2.1.0



220
221
222
223
224
225
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 220

def excluir(id)
  Resultado = file_collection.find({ :_id => id }, @opções).delete_one
  chunks_collection.find({ :files_id => id }, @opções).delete_many
  aumentar Erro::FileNotFound.Novo(id, :id) se Resultado.n == 0
  Resultado
end

#delete_one(file) ➤ Resultado

Remova um único arquivo do GridFS.

Exemplos:

Remova um arquivo do GridFS.

fs.delete_one(file)

Parâmetros:

Retorna:

  • (Resultado)

    O resultado da remoção.

Desde:

  • 2.0.0



204
205
206
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 204

def delete_one(file)
  excluir(file.id)
end

#download_to_stream(ID,io) ➤ Objeto

Baixa o conteúdo do arquivo especificado por ID e o grava no objeto io de destino.

Exemplos:

Baixe o arquivo e grave-o no objeto io.

fs.download_to_stream(id, io)

Parâmetros:

  • id (BSON::ObjectId, Object)

    A ID do arquivo a ser lido.

  • io (IO)

    O objeto io no qual gravar.

Desde:

  • 2.1.0



266
267
268
269
270
271
272
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 266

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

# @example Baixe o arquivo original.

fs.download_to_stream_by_name('some-file.txt', io, revision: 0)

Exemplos:

Baixe a revisão mais recente.

fs.download_to_stream_by_name('some-file.txt', io)

Baixe a segunda revisão do arquivo armazenado.

fs.download_to_stream_by_name('some-file.txt', io, revision: 2)

Parâmetros:

  • Nome do Arquivo (string)

    O nome do arquivo.

  • io (IO)

    O objeto io no qual gravar.

  • opciona (Hash) (padrão para: {})

    Opções para o download.

Hash de opções (opts):

  • :revision (Inteiro)

    O número de revisão do arquivo a ser baixado. O padrão é -1, a versão mais recente.

Aumenta:

Desde:

  • 2.1.0



359
360
361
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 359

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

#find(selector = nil, options = {}) ➤ CollectionView

Encontre documentos de coleção de arquivos correspondentes a um determinado seletor.

Exemplos:

Encontre documentos de collection de arquivos por um nome de arquivo.

fs.find(filename: 'file.txt')

Parâmetros:

  • seletor (Hash) (padrão para: nil)

    O seletor a ser usado na busca.

  • opções (Hash) (padrão para: {})

    As opções para a descoberta.

Hash de opções (opções):

  • :allow_disk_use (verdadeiro, falso)

    Se o servidor pode escrever dados temporários no disco enquanto executa a operação de localização.

  • :batch_size (Inteiro)

    O número de documentos retornados em cada lote de resultados do MongoDB.

  • :limit (Inteiro)

    O número máximo de Docs a retornar da consulta.

  • :no_cursor_timeout (verdadeiro, falso)

    O servidor normalmente atinge o tempo limite dos cursores ociosos após um período de inatividade (10 minutos) para evitar o uso excessivo de memória. Defina esta opção para evitar isso.

  • :skip (Inteiro)

    O número de Docs a ignorar antes de retornar os resultados.

  • :sort (Hash)

    Os pares de chave e direção pelos quais o conjunto de resultados será classificado.

Retorna:

  • (CollectionView)

    A visualização da collection.

Desde:

  • 2.1.0



134
135
136
137
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 134

def find(seletor = nada, opções = {})
  opciona = opções.mesclar(ler: read_preference) se read_preference
  file_collection.find(seletor, opciona || opções)
end

#find_one(selector = nil) ➤ Grid::File

Obsoleto.

Em vez disso, use #find com um limite de -1. Será removido na versão 3.0.

Encontre um arquivo no GridFS.

Exemplos:

Encontre um arquivo por seu ID.

fs.find_one(_id: id)

Encontre um arquivo pelo nome do arquivo.

fs.find_one(filename: 'test.txt')

Parâmetros:

  • seletor (Hash) (padrão para: nil)

    O seletor.

Retorna:

Desde:

  • 2.0.0



155
156
157
158
159
160
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 155

def find_one(seletor = nada)
  file_info = file_collection.find(seletor).primeiro
  Método nada a menos que file_info
  Partes = chunks_collection.find(:files_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

Obsoleto.

Em vez disso, use #upload_from_stream ou #open_upload_stream. Será removido na versão 3.0.

Insira um único arquivo no GridFS.

Exemplos:

Insira um único arquivo.

fs.insert_one(file)

Parâmetros:

Retorna:

  • (BSON::ObjectId)

    O ID do arquivo.

Desde:

  • 2.0.0



175
176
177
178
179
180
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 175

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.

Exemplos:

Abra um fluxo do qual um arquivo pode ser baixado.

fs.open_download_stream(id)

Parâmetros:

  • id (BSON::ObjectId, Object)

    A ID do arquivo a ser lido.

  • opções (Hash) (padrão para: nil)

    As opções.

Hash de opções (opções):

  • :file_info_doc (BSON::Document)

    Somente para uso interno do driver. Um documento BSON para usar como informações de arquivo.

Parâmetros de rendimento:

  • O (Hash)

    fluxo de leitura.

Retorna:

Desde:

  • 2.1.0



243
244
245
246
247
248
249
250
251
252
253
254
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 243

def open_download_stream(id, opções = nada)
  opções = Utilidades.raso_symbolize_keys(opções || {})
  read_stream(id, **opções).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

# @example Abra um fluxo para baixar o arquivo original.

fs.open_download_stream_by_name('some-file.txt', revision: 0)

Exemplos:

Abra um fluxo para baixar a revisão mais recente.

fs.open_download_stream_by_name('some-file.txt')

Abra um fluxo para baixar a segunda revisão do arquivo armazenado.

fs.open_download_stream_by_name('some-file.txt', revision: 2)

Parâmetros:

  • Nome do Arquivo (string)

    O nome do arquivo.

  • opciona (Hash) (padrão para: {})

    Opções para o download.

Hash de opções (opts):

  • :revision (Inteiro)

    O número de revisão do arquivo a ser baixado. O padrão é -1, a versão mais recente.

Parâmetros de rendimento:

  • O (Hash)

    fluxo de leitura.

Retorna:

Aumenta:

Desde:

  • 2.1.0



308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 308

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.

Parâmetros:

  • Nome do Arquivo (string)

    O nome do arquivo no GridFS.

  • opciona (Hash) (padrão para: {})

    As opções para o fluxo de gravação.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :file_id (Objeto)

    Um ID de arquivo exclusivo opcional. Um BSON::ObjectId será gerado automaticamente se um ID de arquivo não for fornecido.

  • :chunk_size (Inteiro)

    Substitua o tamanho padrão do chunk.

  • :metadata (Hash)

    Dados do usuário para o campo "metadados" do documento de coleção de arquivos.

  • :content_type (string)

    O tipo de conteúdo do arquivo. Preterido, use o documento de metadados.

  • :aliases (Array<String>)

    Uma lista de aliases. Preterido, use o documento de metadados.

Parâmetros de rendimento:

  • O (Hash)

    fluxo de gravação.

Retorna:

Desde:

  • 2.1.0



389
390
391
392
393
394
395
396
397
398
399
400
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 389

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

#prefixostring

Obter o prefixo do GridFS

Exemplos:

Obtenha o prefixo.

fs.prefix

Retorna:

  • (string)

    O prefixo GridFS.

Desde:

  • 2.0.0



190
191
192
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 190

def prefix
  @opções[:fs_name] || @opções[:bucket_name] || DEFAULT_ROOT
end

#read_preference ➤ BSON::Document

Observação:

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.

Retorna:

  • (BSON::Document)

    A preferência de leitura. O documento pode ter os seguintes campos:

    • : modo – preferência de leitura especificada como um símbolo; Os valores válidos são :primary, :primary_preferred, :secondary, :secondary_preferred e :nearest.

    • :tag_sets – uma array de hashes.

    • :local_threshold.

Desde:

  • 2.0.0



460
461
462
463
464
465
466
467
468
469
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 460

def read_preference
  @read_preference ||= começar
    pref = opções[:read] || database.read_preference
    se BSON::Documento === pref
      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.

Exemplos:

Carregue um arquivo no bucket GridFS .

fs.upload_from_stream('a-file.txt', file)

Parâmetros:

  • Nome do Arquivo (string)

    O nome do arquivo a ser carregado.

  • io (IO)

    O stream io de origem do qual fazer o upload.

  • opciona (Hash) (padrão para: {})

    As opções para o fluxo de gravação.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :file_id (Objeto)

    Um ID de arquivo exclusivo opcional. Caso contrário, um ObjectId é gerado.

  • :chunk_size (Inteiro)

    Substitua o tamanho padrão do chunk.

  • :metadata (Hash)

    Dados do usuário para o campo "metadados" do documento de coleção de arquivos.

  • :content_type (string)

    O tipo de conteúdo do arquivo. Preterido, use o documento de metadados.

  • :aliases (Array<String>)

    Uma lista de aliases. Preterido, use o documento de metadados.

Retorna:

  • (BSON::ObjectId)

    O ID do arquivo ObjectId.

Desde:

  • 2.1.0



430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 430

def upload_from_stream(Nome do Arquivo, io, opciona = {})
  open_upload_stream(Nome do Arquivo, opciona) fazer |fluxo|
    começar
      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
  end.file_id
end

#write_concern ➤ Mongo::WriteConcern

Obtenha a preocupação de gravação.

Exemplos:

Obtenha a preocupação de gravação.

stream.write_concern

Retorna:

Desde:

  • 2.1.0



479
480
481
482
483
484
485
# File 'build/ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', linha 479

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