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: Transmisión
Resumen de constantes colapsar
- DEFAULT_ROOT =
El prefijo raíz por defecto.
'fs'- CHUNKS_INDEX =
La especificación para el índice de la colección de fragmentos.
{ files_id: 1, n: 1 }.freeze
- FILES_INDEX =
La especificación para el índice de la colección de archivos.
{ nombre de 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.
Por favor, utiliza #find en su lugar 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(filename, opts = {}) {|The| ... } ⇒ 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.)
-
#prefijo ⇒ String
Obtén 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 el nivel de confirmación de escritura (write concern).
Detalles del Constructor
#initialize(database, options = {}) ⇒ FSBucket
Cree el GridFS.
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, = {}) @database = database @options = .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_collection ⇒ colección (solo lectura)
Devuelve chunks_collection. La colección de fragmentos.
85 86 87 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 85 def chunks_collection @chunks_collection end |
#database ⇒ Database (readonly)
Devuelve la base de datos La base de datos.
90 91 92 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 90 def database @database end |
#files_collection ⇒ Colección (solo lectura)
Devuelve files_collection La colección de archivos.
95 96 97 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 95 def colección_archivos @files_collection end |
#opciones ⇒ Hash (solo lectura)
Devuelve opciones Las opciones de FSBucket.
100 101 102 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 100 def @options end |
Detalles del método de instancia
#borrar(id, opts = {}) ⇒ Result
Remueve un único archivo, identificado por su id, de GridFS.
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.
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.
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)
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.
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.
131 132 133 134 |
# Archivo 'lib/mongo/grid/fs_bucket.rb', línea 131 def buscar(selector = nulo, = {}) opciones = .fusionar(leer: read_preference) si read_preference colección_archivos.buscar(selector, opciones || ) end |
#find_one(selector = nulo) ⇒ Grid::File
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.
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
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.
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.
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, = nulo) = Utils.shallow_symbolize_keys( || {}) read_stream(ID, **).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)
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.)
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 |
#prefijo ⇒ string
Obtenga el prefijo para el GridFS
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_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.
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 = [: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.
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_concern ⇒ Mongo::WriteConcern
Obtenga el nivel de confirmación de escritura (write concern).
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 |