Clase: Mongo::Grid::FSBucket

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Definido en:
lib/mongo/grid/fs_bucket.rb,
lib/mongo/grid/stream.rb,
lib/mongo/grid/stream/read.rb,
lib/mongo/grid/stream/guardar.rb

Overview

Representa una vista de GridFS en la base de datos.

Desde:

  • 2.0.0

Definido bajo Namespace

Modules: Stream

Colapso delresumen constante

RAÍZ_PREDETERMINADA =

El prefijo raíz por defecto.

Desde:

  • 2.0.0

'fs'.freeze
ÍNDICE DE TROZOS =

La especificación para el índice de la colección de fragmentos.

Desde:

  • 2.0.0

{ ID_archivos => 1, :n => 1 }.freeze
FILES_INDEX =

La especificación para el índice de la colección de archivos.

Desde:

  • 2.1.0

{ Nombre del archivo: 1, uploadDate: 1 }.freeze

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles del constructor

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

Cree el GridFS.

Ejemplos:

Cree el GridFS.

Grid::FSBucket.new(database)

Parámetros:

  • database (Database)

    La base de datos en la que se encuentran los archivos.

  • opciones (Hash) (por defecto: {})

    Las opciones de GridFS.

Opciones Hash (options):

  • :bucket_name (Cadena)

    El prefijo para las colecciones de archivos y fragmentos.

  • Tamaño del fragmento (Entero)

    Anular el tamaño de fragmento por defecto.

  • :nombre_fs (Cadena)

    El prefijo para las colecciones de archivos y fragmentos.

  • :leer (Hash)

    Las opciones de preferencia de lectura. El hash puede tener los siguientes elementos:

    • :mode – preferencia de lectura especificada como un símbolo; los valores válidos son:primary,:primary_preferred,:secondary,:secondary_preferred y:nearest.

    • :tag_sets – una matriz de hashes.

    • :local_threshold.

  • :: sesión (Sesión)

    La sesión para usar.

  • guardar (Hash)

    Obsoleto. Equivalente a la opción :write_concern.

  • :escribir_preocupación (Hash)

    Las opciones de nivel de confirmación de escritura (write concern). Puede ser :w => Integer | String, :fsync => booleano, :j => booleano.

Desde:

  • 2.0.0



70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 70

def inicializar(database, opciones = {})
  @database = database
  @options = opciones.dup
=begin Soporte de objetos WriteConcern
  si @options[:write_concern].is_a?(WriteConcern::Base)
    # Almacene la instancia en caché para que no tengamos que reconstruirla innecesariamente.
    @write_concern = @options[:write_concern]
    @options[:write_concern] = @write_concern.options
  end
=end
  @options.freeze
  @chunks_collection = database[chunks_name]
  @files_collection = database[files_name]
end

Detalles de los atributos de instancia

#chunks_collectioncolección (solo lectura)

Devuelve chunks_collection La colección de fragmentos.

Devuelve:

  • (colección)

    chunks_collection La colección de fragmentos.

Desde:

  • 2.0.0



88
89
90
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 88

def chunks_collection
  @chunks_collection
end

#databaseDatabase (readonly)

Devuelve la base de datos La base de datos.

Devuelve:

  • (Database)

    base de datos. La base de datos.

Desde:

  • 2.0.0



93
94
95
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 93

def database
  @database
end

#files_collectionColección (solo lectura)

Devuelve files_collection La colección de archivos.

Devuelve:

  • (colección)

    files_collection La colección de archivos.

Desde:

  • 2.0.0



98
99
100
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 98

def colección_archivos
  @files_collection
end

#opcionesHash (solo lectura)

Devuelve opciones Las opciones de FSBucket.

Devuelve:

  • (encriptada)

    opciones Las opciones de FSBucket.

Desde:

  • 2.1.0



103
104
105
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 103

def opciones
  @options
end

Detalles del método de instancia

#eliminar(id, opts = {}) ⇒ Resultado

Remueve un único archivo, identificado por su id, de GridFS.

Ejemplos:

Remover un archivo de GridFS.

fs.delete(id)

Parámetros:

  • ID (BSON::ObjectId, objeto)

    La ID del archivo que se va a remover.

Devuelve:

  • (Result)

    El resultado de la eliminación.

Aumenta:

  • (Error::Archivono encontrado)

    Si no se encuentra el archivo.

Desde:

  • 2.1.0



220
221
222
223
224
225
226
227
228
229
230
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 220

def borrar(ID, opta = {})
  timeout_holder = CsotTimeoutHolder.Nuevo(operation_timeouts: tiempos de espera de operación(opta))
  Resultado = colección_archivos
    .buscar({ :_identificación => ID }, @options.fusionar(tiempo_de_espera_ms: timeout_holder.tiempo de espera restante ms))
    .delete_one(tiempo_de_espera_ms: timeout_holder.tiempo de espera restante ms)
  chunks_collection
    .buscar({ ID_archivos => ID }, @options.fusionar(tiempo_de_espera_ms: timeout_holder.tiempo de espera restante ms))
    .borrar_varios(tiempo_de_espera_ms: timeout_holder.tiempo de espera restante ms)
  propagar Error::ArchivoNoEncontrado.Nuevo(ID, :id) si Resultado.n == 0
  Resultado
end

#delete_one(archivo, opts = {}) ⇒ Resultado

Remover un solo archivo de GridFS.

Ejemplos:

Remover un archivo de GridFS.

fs.delete_one(file)

Parámetros:

Devuelve:

  • (Result)

    El resultado de la eliminación.

Desde:

  • 2.0.0



204
205
206
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 204

def delete_one(Archivo, opta = {})
  borrar(Archivo.ID, opta)
end

#download_to_stream(id, io) ⇒ objeto

Descarga los contenidos del archivo especificado por id y los escribe en el objeto de destino io.

Ejemplos:

Descargue el archivo y guárdelo en el objeto io.

fs.download_to_stream(id, io)

Parámetros:

  • ID (BSON::ObjectId, objeto)

    El id. del archivo a leer.

  • io (IO)

    El objeto io al que escribir.

Desde:

  • 2.1.0



271
272
273
274
275
276
277
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 271

def download_to_stream(ID, io)
  open_download_stream(ID) hacer |secuencia|
    secuencia.cada hacer |fragmento|
      io << fragmento
    end
  end
end

#download_to_stream_by_name(nombre_archivo, io, opciones = {}) ⇒ Objeto

Descarga el contenido del archivo almacenado especificado por el nombre de archivo y por la revisión en las opciones y escribe el contenido en el objeto io de destino.

Los números de revisión se definen de la siguiente manera: 0 =el archivo almacenado original 1 =la primera revisión 2 =la segunda revisión, etc…-2 =la penúltima revisión -1 =la revisión más reciente

# @example Descargue el archivo original.

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

Ejemplos:

Descarga la revisión más reciente.

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

Descargue la segunda revisión del archivo almacenado.

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

Parámetros:

  • nombre de archivo (string)

    El nombre del archivo.

  • io (IO)

    El objeto io al que escribir.

  • opta (Hash) (por defecto: {})

    Opciones para la descarga.

Opciones Hash (opts):

  • Revisión: (Entero)

    Número de revisión del archivo que se descargará. El valor predeterminado es -1, la versión más reciente.

Aumenta:

  • (Error::Archivono encontrado)

    Si no se encuentra el archivo.

  • (Error::InvalidFileRevision)

    Si no se encuentra la revisión solicitada para el archivo.

Desde:

  • 2.1.0



364
365
366
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 364

def descargar_para_transmitir_por_nombre(nombre de archivo, io, opta = {})
  download_to_stream(open_download_stream_by_name(nombre de archivo, opta).file_id, io)
end

#drop(opts = {}) ⇒ objeto

Descarta las colecciones que implementan este bucket.

Desde:

  • 2.0.0



493
494
495
496
497
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 493

def descartar(opta = {})
  context = Operación::Context.Nuevo(operation_timeouts: tiempos de espera de operación(opta))
  colección_archivos.descartar(tiempo_de_espera_ms: context.tiempo de espera restante ms)
  chunks_collection.descartar(tiempo_de_espera_ms: context.tiempo de espera restante ms)
end

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

Busca documentos de colección de archivos que coincidan con un selector determinado.

Ejemplos:

Buscar archivos de documentos de colección por nombre de archivo.

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

Parámetros:

  • selector (Hash) (predeterminado: nulo)

    El selector que se usará en la búsqueda.

  • opciones (Hash) (por defecto: {})

    Las opciones para el find.

Opciones Hash (options):

  • permite_uso_de_disco (verdadero, falso)

    Si el servidor puede guardar datos temporales en disco mientras ejecuta la operación find.

  • :batch_size (Entero)

    La cantidad de documentos devueltos en cada lote de resultados de MongoDB.

  • :limit (Entero)

    El número máximo de Docs que se devolverán de la consulta.

  • :no_cursor_timeout (verdadero, falso)

    El servidor normalmente desactiva el tiempo de espera de los cursores inactivos tras un período de inactividad (10 minutos) para evitar el uso excesivo de memoria. Configure esta opción para evitarlo.

  • Omitir (Entero)

    El número de docs que se deben omitir antes de mostrar resultados.

  • :sort (Hash)

    Los pares de clave y dirección por los que se ordenará el conjunto de resultados.

Devuelve:

  • (CollectionView)

    La vista de la colección.

Desde:

  • 2.1.0



134
135
136
137
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 134

def buscar(selector = nulo, opciones = {})
  opta = opciones.fusionar(leer: read_preference) si read_preference
  colección_archivos.buscar(selector, opta || opciones)
end

#find_one(selector = nulo) ⇒ Grid::File

Obsoleto.

Utilice #find con un límite de -1. Se eliminará en la versión 3.0.

Encuentra un archivo en el GridFS.

Ejemplos:

Busque un archivo por su id.

fs.find_one(_id: id)

Encuentra un archivo por su nombre de archivo.

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

Parámetros:

  • selector (Hash) (predeterminado: nulo)

    El selector.

Devuelve:

Desde:

  • 2.0.0



155
156
157
158
159
160
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 155

def encuentra_uno(selector = nulo)
  file_info = colección_archivos.buscar(selector).primero
  return nulo a menos que file_info
  Fragmentos = chunks_collection.buscar(ID_archivos => file_info[:_identificación]).sort(:n => 1)
  Cuadrícula::Archivo.Nuevo(Fragmentos.to_a, opciones::Mapeador.transformar(file_info, Cuadrícula::Archivo::información::Mapeos.invert))
end

#insert_one(file) ⇒ BSON::ObjectId

Obsoleto.

Utilice #upload_from_stream o #open_upload_stream en su lugar. Se eliminará en la versión 3.0.

Insertar un solo archivo en GridFS.

Ejemplos:

Inserte un solo archivo.

fs.insert_one(file)

Parámetros:

Devuelve:

  • (BSON::ObjectId)

    El id del archivo.

Desde:

  • 2.0.0



175
176
177
178
179
180
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 175

def insert_one(Archivo)
  @indexes ||= ensure_indexes!
  chunks_collection.insert_many(Archivo.Fragmentos)
  colección_archivos.insert_one(Archivo.información)
  Archivo.ID
end

#open_download_stream(id, options = nil) {|The| ... } ⇒ Stream::Read

Abre un flujo desde el cual se puede descargar un archivo, especificado por id.

Ejemplos:

Abre un flujo desde el cual se puede descargar un archivo.

fs.open_download_stream(id)

Parámetros:

  • ID (BSON::ObjectId, objeto)

    El id. del archivo a leer.

  • opciones (Hash) (predeterminado: nulo)

    Las opciones.

Opciones Hash (options):

  • Información del archivo (BSON::Document)

    Solo para uso interno del controlador. Documento BSON para usar como información de archivo.

Parámetros de rendimiento:

  • La (encriptada)

    leer stream.

Devuelve:

  • (Transmisión::Lectura)

    El flujo del que se va a leer.

Desde:

  • 2.1.0



248
249
250
251
252
253
254
255
256
257
258
259
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 248

def open_download_stream(ID, opciones = nulo)
  opciones = Utils.shallow_symbolize_keys(opciones || {})
  read_stream(ID, **opciones).tocar hacer |secuencia|
    si ¿block_given?
      begin
        rendimiento secuencia
      asegurar
        secuencia.Cerrar
      end
    end
  end
end

#open_download_stream_by_name(filename, opts = {}) {|La| ... } ⇒ Stream::Read

Abre un flujo desde el cual la aplicación puede leer el contenido del archivo almacenado especificado por el nombre del archivo y la revisión en las opciones.

Los números de revisión se definen de la siguiente manera: 0 =el archivo almacenado original 1 =la primera revisión 2 =la segunda revisión, etc…-2 =la penúltima revisión -1 =la revisión más reciente

# @example Abrir una transmisión para descargar el archivo original.

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

Ejemplos:

Abre un flujo para descargar la revisión más reciente.

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

Abra un flujo para descargar la segunda revisión del archivo almacenado.

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

Parámetros:

  • nombre de archivo (string)

    El nombre del archivo.

  • opta (Hash) (por defecto: {})

    Opciones para la descarga.

Opciones Hash (opts):

  • Revisión: (Entero)

    Número de revisión del archivo que se descargará. El valor predeterminado es -1, la versión más reciente.

Parámetros de rendimiento:

  • La (encriptada)

    leer stream.

Devuelve:

  • (Transmisión::Lectura)

    El flujo del que se va a leer.

Aumenta:

  • (Error::Archivono encontrado)

    Si no se encuentra el archivo.

  • (Error::InvalidFileRevision)

    Si no se encuentra la revisión solicitada para el archivo.

Desde:

  • 2.1.0



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 313

def open_download_stream_by_name(nombre de archivo, opta = {}, Ybloque)
  revisión = opta.obtener(Revisión:, -1)
  si revisión < 0
    Omitir = revisión.abs - 1
    sort = { 'fechaSubida' => Mongo::Index::DESCENDIENDO }
  else
    Omitir = revisión
    sort = { 'fechaSubida' => Mongo::Index::Ascendente }
  end
  file_info_doc = colección_archivos.buscar({ Nombre del archivo: nombre de archivo} ,
                                     sort: sort,
                                     saltar: Omitir,
                                     limit: -1).primero
  a menos que file_info_doc
    propagar Error::ArchivoNoEncontrado.Nuevo(nombre de archivo, nombre de archivo) a menos que opta[Revisión:]
    propagar Error::InvalidFileRevision.Nuevo(nombre de archivo, opta[Revisión:])
  end
  open_download_stream(file_info_doc[:_identificación], file_info_doc: file_info_doc, Ybloque)
end

#open_upload_stream(nombre de archivo, opts = {}) {|El|... } ⇒ Stream::Write

Opens an upload stream to GridFS to which the contents of a file or blob can be written. (Abre un flujo de carga a GridFS en el que se pueden escribir los contenidos de un archivo o blob.)

Parámetros:

  • nombre de archivo (string)

    El nombre del archivo en GridFS.

  • opta (Hash) (por defecto: {})

    Las opciones para el flujo de guardar.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :file_id (Objeto)

    Un id de archivo único opcional. Se genera automáticamente un BSON::ObjectId si no se proporciona un id de archivo.

  • Tamaño del fragmento (Entero)

    Anular el tamaño de fragmento por defecto.

  • :metadata (Hash)

    Datos del usuario para el campo 'metadatos' del documento de la colección de archivos.

  • :content_type (Cadena)

    El tipo de contenido del archivo. Obsoleto, por favor usa el documento de metadatos en su lugar.

  • :aliases (Matriz<String>)

    Una lista de alias. En desuso, utiliza el documento de metadatos en su lugar.

Parámetros de rendimiento:

  • La (encriptada)

    corriente de guardado.

Devuelve:

Desde:

  • 2.1.0



394
395
396
397
398
399
400
401
402
403
404
405
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 394

def open_upload_stream(nombre de archivo, opta = {})
  opta = Utils.shallow_symbolize_keys(opta)
  write_stream(nombre de archivo, **opta).tocar hacer |secuencia|
    si ¿block_given?
      begin
        rendimiento secuencia
      asegurar
        secuencia.Cerrar
      end
    end
  end
end

#prefijostring

Obtenga el prefijo para el GridFS

Ejemplos:

Obtener el prefijo.

fs.prefix

Devuelve:

  • (string)

    El prefijo GridFS.

Desde:

  • 2.0.0



190
191
192
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 190

def prefix
  @options[:nombre_fs] || @options[:bucket_name] || DEFAULT_ROOT
end

#read_preferenceBSON::Document

Nota:

Este método siempre retorna una instancia de BSON::Document, incluso aunque el constructor de FSBucket especifique el tipo de :read como un Hash, no como un BSON::Document.

Obtén la preferencia de lectura.

Devuelve:

  • (BSON::Document)

    La preferencia de lectura. El documento puede tener los siguientes campos:

    • :mode – preferencia de lectura especificada como un símbolo; los valores válidos son:primary,:primary_preferred,:secondary,:secondary_preferred y:nearest.

    • :tag_sets – una matriz de hashes.

    • :local_threshold.

Desde:

  • 2.0.0



465
466
467
468
469
470
471
472
473
474
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 465

def read_preference
  @read_preference ||= begin
    pref = opciones[:leer] || database.read_preference
    si BSON::Documento === pref
      pref
    else
      BSON::Documento.Nuevo(pref)
    end
  end
end

#upload_from_stream(filename, io, opts = {}) ⇒ BSON::ObjectId

Carga un archivo de usuario en un bucket de GridFS. Lee el contenido del archivo de usuario desde el flujo de origen y lo carga como fragmentos en la colección de fragmentos. Después de cargar todos los fragmentos, crea un documento de colección de archivos para el nombre de archivo en la colección de archivos.

Ejemplos:

Sube un archivo al bucket de GridFS.

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

Parámetros:

  • nombre de archivo (string)

    El nombre del archivo a cargar.

  • io (IO)

    La secuencia io de origen desde la que se va a cargar.

  • opta (Hash) (por defecto: {})

    Las opciones para el flujo de guardar.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :file_id (Objeto)

    Un ID de archivo único opcional. De lo contrario, se genera un ObjectId.

  • Tamaño del fragmento (Entero)

    Anular el tamaño de fragmento por defecto.

  • :metadata (Hash)

    Datos del usuario para el campo 'metadatos' del documento de la colección de archivos.

  • :content_type (Cadena)

    El tipo de contenido del archivo. Obsoleto, por favor usa el documento de metadatos en su lugar.

  • :aliases (Matriz<String>)

    Una lista de alias. En desuso, utiliza el documento de metadatos en su lugar.

Devuelve:

  • (BSON::ObjectId)

    El id del archivo ObjectId.

Desde:

  • 2.1.0



435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 435

def upload_from_stream(nombre de archivo, io, opta = {})
  open_upload_stream(nombre de archivo, opta) hacer |secuencia|
    begin
      secuencia.guardar(io)
    # IOError y SystemCallError son para errores de lectura del io.
    # Error::SocketError y Error::SocketTimeoutError son para
    # escribiendo en MongoDB.
    rescate IOError, SystemCallError, Error::Error de socket, Error::SocketTimeoutError
      begin
        secuencia.abortar
      rescate Error::OperationFailure
      end
      propagar
    end
  end.file_id
end

#write_concernMongo::WriteConcern

Obtenga la preocupación escrita.

Ejemplos:

Obtenga la preocupación escrita.

stream.write_concern

Devuelve:

Desde:

  • 2.1.0



484
485
486
487
488
489
490
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 484

def escribir_preocupación
  @write_concern ||= si wco = @options[:escribir_preocupación] || @options[guardar]
    Nivel de confirmación de escritura (write concern).Obtener(wco)
  else
    database.escribir_preocupación
  end
end