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/guardar.rb
Overview
Representa una vista de GridFS en la base de datos.
Definido bajo Namespace
Modules: Stream
Colapso delresumen constante
- RAÍZ_PREDETERMINADA =
El prefijo raíz por defecto.
'fs'.freeze
- ÍNDICE DE TROZOS =
La especificación para el índice de la colección de fragmentos.
{ ID_archivos => 1, :n => 1 }.freeze
- FILES_INDEX =
La especificación para el índice de la colección de archivos.
{ Nombre del archivo: 1, uploadDate: 1 }.freeze
Resumen de atributos de la instancia colapsar
-
#chunks_collection ⇒ Collection
Solo lectura
Chunks_collection La colección de fragmentos.
-
#database ⇒ Database
Solo lectura
Database The database.
-
#files_collection ⇒ Collection
Solo lectura
Files_collection La colección de archivos.
-
#options ⇒ Hash
Solo lectura
Opciones Las opciones de FSBucket.
Resumen del método de instancia colapsar
-
#borrar(id, opciones = {}) ⇒ Result
Remueve un único archivo, identificado por su id, de GridFS.
-
#delete_one(archivo, opciones = {}) ⇒ Result
Remover un solo archivo de GridFS.
-
#download_to_stream(id, io) ⇒ Object
Descarga los contenidos del archivo especificado por id y los escribe en el objeto de destino io.
-
#download_to_stream_by_name(filename, io, opts = {}) ⇒ 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.
-
#descartar(opts = {}) ⇒ Object
Descarta las colecciones que implementan este bucket.
-
#find(selector = nil, options = {}) ⇒ CollectionView
Busca documentos de colección 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
Cree el GridFS.
-
#insert_one(file) ⇒ BSON::ObjectId
Obsoleto
Obsoleto.
Utilice #upload_from_stream o #open_upload_stream en su lugar. Se eliminará en la versión 3.0.
-
#open_download_stream(id, options = nil) {|The| ... } ⇒ Stream::Read
Abre un flujo desde el cual se puede descargar un archivo, especificado por id.
-
#open_download_stream_by_name(filename, opts = {}) {|El| ... } ⇒ 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.
-
#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.)
-
#prefijo ⇒ String
Obtenga el prefijo para GridFS.
-
#read_preference ⇒ BSON::Document
Obtén la preferencia de lectura.
-
#upload_from_stream(filename, io, opts = {}) ⇒ BSON::ObjectId
Carga un archivo de usuario en un bucket GridFS.
-
#write_concern ⇒ Mongo::WriteConcern
Obtenga la preocupación escrita.
Detalles del constructor
#initialize(database, options = {}) ⇒ FSBucket
Cree 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 @options = .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_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 chunks_collection @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_archivos @files_collection 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 @options 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 = 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.
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.
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)
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.
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.
134 135 136 137 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 134 def buscar(selector = nulo, = {}) opta = .fusionar(leer: read_preference) si read_preference colección_archivos.buscar(selector, opta || ) end |
#find_one(selector = nulo) ⇒ Grid::File
Utilice #find con un límite de -1. Se eliminará en la versión 3.0.
Encuentra un archivo en el 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_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
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.
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.
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, = nulo) = Utils.shallow_symbolize_keys( || {}) read_stream(ID, **).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)
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.)
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 |
#prefijo ⇒ string
Obtenga el prefijo para el GridFS
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_preference ⇒ BSON::Document
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.
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 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_concern ⇒ 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 wco = @options[:escribir_preocupación] || @options[guardar] Nivel de confirmación de escritura (write concern).Obtener(wco) else database.escribir_preocupación end end |