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: Transmisión

Resumen de constantes colapsar

DEFAULT_ROOT =

El prefijo raíz por defecto.

Desde:

  • 2.0.0

'fs'
CHUNKS_INDEX =

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

Desde:

  • 2.0.0

{ files_id: 1, n: 1 }.freeze
FILES_INDEX =

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

Desde:

  • 2.1.0

{ nombre de 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 (encriptada) (por defecto: {})

    Las opciones de GridFS.

Opciones Hash (options):

  • :bucket_name (string)

    El prefijo para las colecciones de archivos y fragmentos.

  • Tamaño del fragmento (Integer)

    Anular el tamaño de fragmento por defecto.

  • :fs_name (string)

    El prefijo para las colecciones de archivos y fragmentos.

  • :leer (encriptada)

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

    • :modo -- preferencia de lectura especificada como un símbolo; los valores válidos son :principal, :preferencia_principal, :secundario, :preferencia_secundaria y :más cercanos.
    • :tag_sets -- un arreglo de hashes.
    • :local_threshold.
  • :: sesión (Sesión)

    La sesión para usar.

  • guardar (encriptada)

    Obsoleto. Equivalente a la opción :write_concern.

  • conformidad_de_lectura (encriptada)

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

Desde:

  • 2.0.0



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

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

Detalles de atributo de instancias

#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



85
86
87
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 85

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



90
91
92
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 90

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



95
96
97
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 95

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



100
101
102
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 100

def opciones
  @options
end

Detalles del método de instancia

#borrar(id, opts = {}) ⇒ Result

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 remover.

Aumenta:

Desde:

  • 2.1.0



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

def borrar(ID, opciones = {})
  timeout_holder = CsotTimeoutHolder.Nuevo(operation_timeouts: operation_timeouts(opciones))
  Resultado = colección_archivos
           .buscar({ _id: ID }, @options.fusionar(tiempo_de_espera_ms: timeout_holder.remaining_dtimeouts_ms))
           .delete_one(tiempo_de_espera_ms: timeout_holder.remaining_dtimeouts_ms)
  chunks_collection
    .buscar({ files_id: ID }, @options.fusionar(tiempo_de_espera_ms: timeout_holder.remaining_dtimeouts_ms))
    .borrar_varios(tiempo_de_espera_ms: timeout_holder.remaining_dtimeouts_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 remover.

Desde:

  • 2.0.0



202
203
204
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 202

def delete_one(Archivo, opciones = {})
  borrar(Archivo.ID, opciones)
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



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

def download_to_stream(ID, io)
  open_download_stream(ID) hacer |Transmisión|
    Transmisión.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, revisión: 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.

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

    Opciones para la descarga.

Opciones Hash (opts):

  • Revisión: (Integer)

    El número de revisión del archivo a descargar. Por defecto, -1, la versión más reciente.

Aumenta:

Desde:

  • 2.1.0



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

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

#drop(opts = {}) ⇒ objeto

Descarta las colecciones que implementan este bucket.

Desde:

  • 2.0.0



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

def descartar(opciones = {})
  context = Operación::Context.Nuevo(operation_timeouts: operation_timeouts(opciones))
  colección_archivos.descartar(tiempo_de_espera_ms: context.remaining_dtimeouts_ms)
  chunks_collection.descartar(tiempo_de_espera_ms: context.remaining_dtimeouts_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 (encriptada) (valor por defecto: nil)

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

  • opciones (encriptada) (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 (Integer)

    El número de documentos devueltos en cada lote de resultados de MongoDB.

  • :limit (Integer)

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

  • :no_cursor_timeout (verdadero, falso)

    El servidor normalmente cierra cursores inactivos después de un período de inactividad (10 minutos) para evitar el uso excesivo de memoria. Configure esta opción para evitarlo.

  • Omitir (Integer)

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

  • :sort (encriptada)

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

Devuelve:

  • (CollectionView)

    La vista de colección.

Desde:

  • 2.1.0



131
132
133
134
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 131

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

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

Obsoleto.

Por favor, utiliza #find en su lugar con un límite de -1. Se eliminará en la versión 3.0.

Encuentra un archivo en el GridFS.

Ejemplos:

Encuentra 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 (encriptada) (valor por defecto: nil)

    El selector.

Devuelve:

Desde:

  • 2.0.0



152
153
154
155
156
157
158
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 152

def find_one(selector = nulo)
  file_info = colección_archivos.buscar(selector).primero
  return nulo a menos que file_info

  Fragmentos = chunks_collection.buscar(files_id: file_info[::_id]).sort(n: 1)
  Cuadrícula::Archivo.Nuevo(Fragmentos.to_a, opciones::Mapeador.Transforma(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.

Inserta un solo archivo en el GridFS.

Ejemplos:

Inserte un solo archivo.

fs.insert_one(file)

Parámetros:

Devuelve:

  • (BSON::ObjectId)

    El ID del archivo.

Desde:

  • 2.0.0



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

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 (encriptada) (valor por defecto: nil)

    Las opciones.

Opciones Hash (options):

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

    Solo para uso interno del driver. Un documento BSON para utilizar como información de archivo.

Parámetros de rendimiento:

  • La (encriptada)

    leer stream.

Devuelve:

Desde:

  • 2.1.0



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

def open_download_stream(ID, opciones = nulo)
  opciones = Utils.shallow_symbolize_keys(opciones || {})
  read_stream(ID, **opciones).tocar hacer |Transmisión|
    si ¿block_given?
      begin
        rendimiento Transmisión
      asegurar
        Transmisión.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 Abre un flujo para descargar el archivo original.

fs.open_download_stream_by_name('some-file.txt', revisión: 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.

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

    Opciones para la descarga.

Opciones Hash (opts):

  • Revisión: (Integer)

    El número de revisión del archivo a descargar. Por defecto, -1, la versión más reciente.

Parámetros de rendimiento:

  • La (encriptada)

    leer stream.

Devuelve:

Aumenta:

Desde:

  • 2.1.0



312
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 312

def open_download_stream_by_name(nombre de archivo, opciones = {}, &bloque)
  revisión = opciones.obtener(Revisión:, -1)
  si revisión < 0
    Omitir = revisión.abs - 1
    sort = { 'fechaSubida' => mongo::Index::Descendente }
  else
    Omitir = revisión
    sort = { 'fechaSubida' => mongo::Index::Ascendente }
  end
  file_info_doc = colección_archivos.buscar({ nombre de 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 opciones[Revisión:]

    propagar Error::InvalidFileRevision.Nuevo(nombre de archivo, opciones[Revisión:])
  end
  open_download_stream(file_info_doc[::_id], file_info_doc: file_info_doc, &bloque)
end

#open_upload_stream(nombre_de_archivo, opts = {}) {|La| ... } ⇒ Stream::Guardar

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.

  • opciones (encriptada) (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 (Integer)

    Anular el tamaño de fragmento por defecto.

  • :metadata (encriptada)

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

  • :content_type (string)

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

  • :aliases (arreglo<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, opciones = {})
  opciones = Utils.shallow_symbolize_keys(opciones)
  write_stream(nombre de archivo, **opciones).tocar hacer |Transmisión|
    si ¿block_given?
      begin
        rendimiento Transmisión
      asegurar
        Transmisión.Cerrar
      end
    end
  end
end

#prefijostring

Obtenga el prefijo para el GridFS

Ejemplos:

Obtenga el prefijo.

fs.prefix

Devuelve:

  • (string)

    El prefijo de GridFS.

Desde:

  • 2.0.0



188
189
190
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 188

def prefix
  @options[:fs_name] || @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:

    • :modo -- preferencia de lectura especificada como un símbolo; los valores válidos son :principal, :preferencia_principal, :secundario, :preferencia_secundaria y :más cercanos.
    • :tag_sets -- un arreglo de hashes.
    • :local_threshold.

Desde:

  • 2.0.0



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

def read_preference
  @read_preference ||= begin
    pref = opciones[:leer] || database.read_preference
    si pref.is_a?(BSON::Documento)
      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 que se va a cargar.

  • io (IO)

    El flujo de io de origen desde el cual cargar.

  • opciones (encriptada) (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 (Integer)

    Anular el tamaño de fragmento por defecto.

  • :metadata (encriptada)

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

  • :content_type (string)

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

  • :aliases (arreglo<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
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 435

def upload_from_stream(nombre de archivo, io, opciones = {})
  open_upload_stream(nombre de archivo, opciones) hacer |Transmisión|
    Transmisión.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::SocketError, Error::SocketTimeoutError
    begin
      Transmisión.abortar
    rescate Error::OperationFailure
    end
    propagar
  end.file_id
end

#write_concernMongo::WriteConcern

Obtenga el nivel de confirmación de escritura (write concern).

Ejemplos:

Obtenga el nivel de confirmación de escritura (write concern).

stream.write_concern

Devuelve:

Desde:

  • 2.1.0



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

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