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/write.rb

Overview

Representa una vista del GridFS en la base de datos.

Desde:

  • 2.0.0

Definido en el espacio de nombres

Modules: Stream

Colapso delresumen constante

RAÍZ_PREDETERMINADA =

El prefijo raíz predeterminado.

Desde:

  • 2.0.0

'fs'.freeze
ÍNDICE DE TROZOS =

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

Desde:

  • 2.0.0

{ :id_de_archivos => 1, :n => 1 }.freeze
ÍNDICE_ARCHIVOS =

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

Desde:

  • 2.1.0

{ Nombre del archivo: 1, Fecha de carga: 1 }.freeze

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles del constructor

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

Crear el GridFS.

Ejemplos:

Crear el GridFS.

Grid::FSBucket.new(database)

Parámetros:

  • database (Database)

    La base de datos en la que residen los archivos.

  • opciones (Hash) (predeterminado: {})

    Las opciones de GridFS.

Opciones Hash(opciones):

  • :nombre_del_cubo (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 contener 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 a utilizar.

  • :escribir (Hash)

    Obsoleto. Equivalente a la opción :write_concern.

  • :escribir_preocupación (Hash)

    Las opciones de escritura pueden ser: :w => Entero|Cadena, :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
  @opciones = opciones.dup
=begin Soporte de objetos WriteConcern
  si @options[:write_concern].is_a?(WriteConcern::Base)
    # Almacene en caché la instancia para no reconstruirla innecesariamente.
    @write_concern = @options[:write_concern]
    @options[:write_concern] = @write_concern.options
  end
=end
  @opciones.freeze
  @chunks_collection = database[nombre_de_fragmentos]
  @colección_de_archivos = database[nombre_de_archivo]
end

Detalles de los atributos de instancia

#chunks_collectionColección (solo lectura)

Devuelve chunks_collection La colección de fragmentos.

Devuelve:

  • (Recopilació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 colección de trozos
  @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:

Desde:

  • 2.0.0



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

def colección de archivos
  @colección_de_archivos
end

#opcionesHash (solo lectura)

Devuelve opciones Las opciones de FSBucket.

Devuelve:

  • (Hash)

    opciones Las opciones de FSBucket.

Desde:

  • 2.1.0



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

def opciones
  @opciones
end

Detalles del método de instancia

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

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

Ejemplos:

Eliminar un archivo de GridFS.

fs.delete(id)

Parámetros:

  • ID. (BSON::ObjectId, Objeto)

    El identificador del archivo a eliminar.

Devuelve:

  • (Result)

    El resultado de la eliminación.

Aumentos:

  • (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 = Titular del tiempo de espera de Csot.Nuevo(tiempos de espera de operación: tiempos de espera de operación(opta))
  resultado = colección de archivos
    .buscar({ :_identificación => ID. }, @opciones.unir(tiempo de espera_ms: timeout_holder.tiempo de espera restante ms))
    .delete_one(tiempo de espera_ms: timeout_holder.tiempo de espera restante ms)
  colección de trozos
    .buscar({ :id_de_archivos => ID. }, @opciones.unir(tiempo de espera_ms: timeout_holder.tiempo de espera restante ms))
    .eliminar_muchos(tiempo de espera_ms: timeout_holder.tiempo de espera restante ms)
  propagar Error::Archivo no encontrado.Nuevo(ID., :id) Si resultado.n == 0
  resultado
end

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

Remover un solo archivo de GridFS.

Ejemplos:

Eliminar 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 el contenido del archivo especificado por id y lo escribe en el objeto io de destino.

Ejemplos:

Descargue el archivo y escríbalo 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 donde escribir.

Desde:

  • 2.1.0



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

def descargar_a_transmisión(ID., io)
  abrir_descarga_flujo(ID.) hacer |secuencia|
    secuencia.cada hacer |fragmento|
      io << fragmento
    end
  end
end

#descargar_a_transmisión_por_nombre(nombre_de_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:

Descargue 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 (Cadena) -

    El nombre del archivo.

  • io (IO)

    El objeto io donde escribir.

  • opta (Hash) (predeterminado: {})

    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.

Aumentos:

  • (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 = {})
  descargar_a_transmisión(abrir_descarga_transmisión_por_nombre(nombre de archivo, opta).file_id, io)
end

#drop(opts = {}) ⇒ Objeto

Elimine las colecciones que implementan este depósito.

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(tiempos de espera de operación: tiempos de espera de operación(opta))
  colección de archivos.descartar(tiempo de espera_ms: context.tiempo de espera restante ms)
  colección de trozos.descartar(tiempo de espera_ms: context.tiempo de espera restante ms)
end

#buscar(selector = nulo, opciones = {}) ⇒ CollectionView

Busque documentos de colecciones de archivos que coincidan con un selector determinado.

Ejemplos:

Busque documentos de una colección de archivos por nombre de archivo.

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

Parámetros:

  • selector (Hash) (predeterminado: nulo)

    El selector a utilizar en la búsqueda.

  • opciones (Hash) (predeterminado: {})

    Las opciones para el find.

Opciones Hash(opciones):

  • :permitir_uso_de_disco (verdadero,falso)

    Si el servidor puede escribir datos temporales en el disco mientras ejecuta la operación de búsqueda.

  • :tamaño_del_lote (Entero)

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

  • :limit (Entero)

    El número máximo de documentos 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.

  • :saltar (Entero)

    La cantidad de documentos que se deben omitir antes de devolver resultados.

  • :sort (Hash)

    Los pares de clave y dirección mediante los cuales 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.unir(leer: read_preference) Si read_preference
  colección de archivos.buscar(selector, opta || opciones)
end

#find_one(selector = nulo) ⇒ Cuadrícula::Archivo

Obsoleto.

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

Busque un archivo en GridFS.

Ejemplos:

Busque un archivo por su id.

fs.find_one(_id: id)

Busque 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 de archivos.buscar(selector).primera
  return nulo a no ser que file_info
  trozos = colección de trozos.buscar(:id_de_archivos => file_info[:_identificación]).sort(:n => 1)
  Cuadrícula::Archivo.Nuevo(trozos.to_a, opciones::Mapeador.transformar(file_info, Cuadrícula::Archivo::Info::MAPEO.invert))
end

#insert_one(file) ⇒ BSON::ObjectId

Obsoleto.

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

Insertar un solo archivo en GridFS.

Ejemplos:

Insertar 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!
  colección de trozos.insert_many(archivo.trozos)
  colección de archivos.insert_one(archivo.información)
  archivo.ID.
end

#open_download_stream(id, opciones = nulo) {|El|... } ⇒ Stream::Leer

Abre una secuencia desde la cual se puede descargar un archivo, especificado por id.

Ejemplos:

Abra una secuencia desde la cual se pueda 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(opciones):

  • :archivo_info_doc (BSON::Documento)

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

Parámetros de rendimiento:

  • El (Hash)

    leer stream.

Devuelve:

  • (Transmisión::Lectura)

    La secuencia desde la que 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 abrir_descarga_flujo(ID., opciones = nulo)
  opciones = Utils.shallow_symbolize_keys(opciones || {})
  read_stream(ID., **opciones).grifo hacer |secuencia|
    Si ¿bloque_dado?
      begin
        rendimiento secuencia
      asegurar
        secuencia.cerrar
      end
    end
  end
end

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

Abre una secuencia desde la cual la aplicación puede leer el contenido del archivo almacenado especificado por el nombre de 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:

Abra una transmisión para descargar la revisión más reciente.

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

Abra una secuencia 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 (Cadena) -

    El nombre del archivo.

  • opta (Hash) (predeterminado: {})

    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:

  • El (Hash)

    leer stream.

Devuelve:

  • (Transmisión::Lectura)

    La secuencia desde la que leer.

Aumentos:

  • (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 abrir_descarga_transmisión_por_nombre(nombre de archivo, opta = {}, Ybloque)
  revisión = opta.Fetch(:revisión, -1)
  Si revisión < 0
    Omitir = revisión.abs - 1
    sort = { ' fecha decarga ' => Mongo::Index::DESCENDIENDO }
  else
    Omitir = revisión
    sort = { ' fecha decarga ' => Mongo::Index::ASCENDENTE }
  end
  file_info_doc = colección de archivos.buscar({ Nombre del archivo: nombre de archivo} ,
                                     sort: sort,
                                     saltar: Omitir,
                                     limit: -1).primera
  a no ser que file_info_doc
    propagar Error::Archivo no encontrado.Nuevo(nombre de archivo, :Nombre del archivo) a no ser que opta[:revisión]
    propagar Error::InvalidFileRevision.Nuevo(nombre de archivo, opta[:revisión])
  end
  abrir_descarga_flujo(file_info_doc[:_identificación], archivo_info_doc: file_info_doc, Ybloque)
end

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

Abre un flujo de carga a GridFS en el que se puede escribir el contenido de un archivo o blob.

Parámetros:

  • nombre de archivo (Cadena) -

    El nombre del archivo en GridFS.

  • opta (Hash) (predeterminado: {})

    Las opciones para el flujo de escritura.

  • opciones (Hash)

    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 de usuario para el campo 'metadatos' del documento de colección de archivos.

  • :content_type (Cadena)

    El tipo de contenido del archivo. Obsoleto; utilice el documento de metadatos en su lugar.

  • :aliases (Matriz<String>)

    Lista de alias. Obsoleto. Utilice el documento de metadatos.

Parámetros de rendimiento:

  • El (Hash)

    secuencia de escritura

Devuelve:

  • (Transmisión::Escritura)

    La secuencia de escritura.

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)
  secuencia de escritura(nombre de archivo, **opta).grifo hacer |secuencia|
    Si ¿bloque_dado?
      begin
        rendimiento secuencia
      asegurar
        secuencia.cerrar
      end
    end
  end
end

#prefijoCadena

Obtenga el prefijo para el GridFS

Ejemplos:

Obtener el prefijo.

fs.prefix

Devuelve:

  • (Cadena) -

    El prefijo GridFS.

Desde:

  • 2.0.0



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

def prefix
  @opciones[:nombre_fs] || @opciones[:nombre_del_cubo] || RAÍZ PREDETERMINADA
end

#read_preferenceBSON::Document

Nota:

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

Obtenga la preferencia de lectura.

Devuelve:

  • (BSON::Documento)

    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:

Subir un archivo al depósito GridFS.

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

Parámetros:

  • nombre de archivo (Cadena) -

    El nombre del archivo a cargar.

  • io (IO)

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

  • opta (Hash) (predeterminado: {})

    Las opciones para el flujo de escritura.

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :file_id (Objeto)

    Un identificador 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 de usuario para el campo 'metadatos' del documento de colección de archivos.

  • :content_type (Cadena)

    El tipo de contenido del archivo. Obsoleto; utilice el documento de metadatos en su lugar.

  • :aliases (Matriz<String>)

    Lista de alias. Obsoleto. Utilice el documento de metadatos.

Devuelve:

  • (BSON::ObjectId)

    El identificador 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 subir_desde_la_transmisión(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::Error de tiempo de espera del socket
      begin
        secuencia.anular
      rescate Error::Operación fallida
      end
      propagar
    end
  end.file_id
end

#escribir_preocupaciónMongo::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 oma = @opciones[:escribir_preocupación] || @opciones[:escribir]
    Escribir preocupación.Obtener(oma)
  else
    database.escribir_preocupación
  end
end