Clase: Mongo::Grid::FSBucket
- Hereda:
-
Objeto
- Objeto
- Mongo::Grid::FSBucket
- 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.
Definido en el espacio de nombres
Modules: Stream
Colapso delresumen constante
- RAÍZ_PREDETERMINADA =
El prefijo raíz predeterminado.
'fs'.freeze
- ÍNDICE DE TROZOS =
La especificación para el índice de colección de fragmentos.
{ :id_de_archivos => 1, :n => 1 }.freeze
- ÍNDICE_ARCHIVOS =
La especificación para el índice de colección de archivos.
{ Nombre del archivo: 1, Fecha de carga: 1 }.freeze
Colapso delresumen de atributos de instancia
-
#chunks_collection ⇒ Collection
solo lectura
Colección de fragmentos La colección de fragmentos.
-
#database ⇒ Database
solo lectura
Database The database.
-
#files_collection ⇒ Collection
solo lectura
Colección_de_archivos La colección de archivos.
-
#options ⇒ Hash
solo lectura
Opciones Las opciones de FSBucket.
Colapso del resumen del método de instancia
-
#eliminar(id, opts = {}) ⇒ Resultado
Remueve un único archivo, identificado por su id, de GridFS.
-
#delete_one(archivo, opts = {}) ⇒ Resultado
Remover un solo archivo de GridFS.
-
#descargar_a_transmisión(id, io) ⇒ Objeto
Descarga el contenido del archivo especificado por id y lo escribe en el objeto io de destino.
-
#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.
-
#drop(opts = {}) ⇒ Objeto
Elimine las colecciones que implementan este depósito.
-
#buscar(selector = nulo, opciones = {}) ⇒ CollectionView
Busque documentos de colecciones de archivos que coincidan con un selector determinado.
-
#find_one(selector = nil) ⇒ Grid::File
Obsoleto
Obsoleto.
Utilice #find con un límite de -1. Se eliminará en la versión 3.0.
-
#initialize(database, options = {}) ⇒ FSBucket
constructor
Crear el GridFS.
-
#insert_one(file) ⇒ BSON::ObjectId
Obsoleto
Obsoleto.
Utilice #upload_from_stream o #open_upload_stream. Se eliminará en la versión 3.0.
-
#open_download_stream(id, opciones = nulo) {|El|... } ⇒ Stream::Leer
Abre una secuencia desde la cual se puede descargar un archivo, especificado por id.
-
#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.
-
#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.
-
#prefijo ⇒ Cadena
Obtenga el prefijo para GridFS.
-
#preferencia_de_lectura ⇒ BSON::Documento
Obtenga la preferencia de lectura.
-
#upload_from_stream(filename, io, opts = {}) ⇒ BSON::ObjectId
Sube un archivo de usuario a un depósito GridFS.
-
#escribir_preocupación ⇒ Mongo::WriteConcern
Obtenga la preocupación escrita.
Detalles del constructor
#initialize(database, options = {}) ⇒ FSBucket
Crear el GridFS.
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, = {}) @database = database @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_collection ⇒ Colección (solo lectura)
Devuelve chunks_collection La colección de fragmentos.
88 89 90 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 88 def colección de trozos @chunks_collection end |
#database ⇒ Database (readonly)
Devuelve la base de datos La base de datos.
93 94 95 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 93 def database @database end |
#files_collection ⇒ Colección (solo lectura)
Devuelve files_collection La colección de archivos.
98 99 100 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 98 def colección de archivos @colección_de_archivos end |
#opciones ⇒ Hash (solo lectura)
Devuelve opciones Las opciones de FSBucket.
103 104 105 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 103 def @opciones end |
Detalles del método de instancia
#eliminar(id, opts = {}) ⇒ Resultado
Remueve un único archivo, identificado por su id, de GridFS.
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.
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.
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)
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.
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.
134 135 136 137 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 134 def buscar(selector = nulo, = {}) opta = .unir(leer: read_preference) Si read_preference colección de archivos.buscar(selector, opta || ) end |
#find_one(selector = nulo) ⇒ Cuadrícula::Archivo
Utilice #find con un límite de -1. Se eliminará en la versión 3.0.
Busque un archivo en GridFS.
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
Utilice #upload_from_stream o #open_upload_stream. Se eliminará en la versión 3.0.
Insertar un solo archivo en GridFS.
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.
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., = nulo) = Utils.shallow_symbolize_keys( || {}) read_stream(ID., **).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)
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.
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 |
#prefijo ⇒ Cadena
Obtenga el prefijo para el GridFS
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_preference ⇒ BSON::Document
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.
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 = [: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.
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ón ⇒ Mongo::WriteConcern
Obtenga la preocupación escrita.
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 |