Clase: Mongo::Collection

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Asistentes, QueryableEncryption, Retryable
Definido en:
lib/mongo/collection.rb,
lib/mongo/collection/view.rb,
lib/mongo/collection/helpers.rb,
lib/mongo/collection/view/iterable.rb,
lib/mongo/collection/view/readable.rb,
lib/mongo/collection/view/writable.rb,
lib/mongo/collection/view/immutable.rb,
lib/mongo/collection/view/map_reduce.rb,
lib/mongo/collection/view/aggregation.rb,
lib/mongo/collection/view/explainable.rb,
lib/mongo/collection/view/change_stream.rb,
lib/mongo/collection/queryable_encryption.rb,
lib/mongo/collection/view/builder/map_reduce.rb,
lib/mongo/collection/view/builder/aggregation.rb,
lib/mongo/collection/view/aggregation/behavior.rb,
lib/mongo/collection/view/change_stream/retryable.rb

Overview

Representa una colección en la base de datos y operaciones que se pueden aplicar directamente a una.

Desde:

  • 2.0.0

Definido bajo Namespace

Modules: Asistentes, QueryableEncryption Clases: Ver

Resumen de constantes colapsar

CAPPED =

La opción limitada.

Desde:

  • 2.1.0

'límite máximo'
NS =

La constante del campo ns.

Desde:

  • 2.1.0

'ns'
CAMBIABLE_OPTIONS =

Opciones que se pueden actualizar en una nueva instancia de la colección a través del método #with.

Desde:

  • 2.1.0

%i[Lea read_concern guardar write_concern].freeze
CREATE_COLLECTION_OPTIONS =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

Opciones mapa para transformar opciones de creación de colección.

Desde:

  • 2.0.0

{
  time_series: series temporales,
  expire_after: expireAfterSeconds,
  clustered_index: :clusteredIndex,
  change_stream_pre_and_post_images: Imágenes anteriores y posteriores del flujo de cambio:,
  campos_encriptados: camposCifrados,
  validator: :validator,
  view_on: Consulte en
}

Constantes incluidas de QueryableEncryption

QueryableEncryption::QE2_MIN_WIRE_VERSION

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos proporcionados por Asistentes

#do_drop

Métodos incluidos de QueryableEncryption

#maybe_create_qe_collections, #maybe_drop_emm_collections

Métodos incluidos de Retryable

#read_worker, #select_server, #with_overload_retry, #write_worker

Detalles del Constructor

#initialize(base de datos, name, options = {}) ⇒ Collection

Instancie una nueva colección.

Ejemplos:

Instancie una nueva colección.

Mongo::Collection.new(database, 'test')

Parámetros:

  • database (Mongo::Database)

    La base de datos de la colección.

  • Nombre (String, Símbolo)

    El nombre de la colección.

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

    Las opciones de colección.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (options):

  • :read_concern (encriptada)

    El hash de opciones de nivel de consistencia de lectura, con las siguientes claves opcionales:

    • :level -- el nivel de preferencia de lectura como símbolo; los valores válidos son :local, :majority y :snapshot
  • :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 a utilizar para la operación.

  • tamaño: (Integer)

    El tamaño de la colección con tamaño fijo.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que el valor se hereda de la base de datos o del cliente.

Aumenta:

Desde:

  • 2.0.0



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# Archivo 'lib/mongo/collection.rb', línea 163

def inicializar(database, Nombre, opciones = {})
  propagar Error::InvalidCollectionName.Nuevo a menos que Nombre
  si opciones[guardar] && opciones[conformidad_de_lectura] && opciones[guardar] != opciones[conformidad_de_lectura]
    propagar ArgumentError, "Si :guardar y :write_concern se dan ambos, deben ser idénticos: #{options.inspect}"
  end

  @database = database
  @name = Nombre.to_s.freeze
  @options = opciones.dup
  @timeout_ms = opciones.borrar(:timeout_ms)
  # Soporte de objetos WriteConcern
  #       si @options[:write_concern].is_a?(WriteConcern::Base)
  #         # Guardar en caché la instancia para que no tengamos que reconstruirla innecesariamente.
  #         @write_concern = @options[:write_concern]
  #         @opciones[:write_concern] = @write_concern.opciones
  #       end
  @options.freeze
end

Detalles de atributo de instancias

#databaseMongo::Database (readonly)

Devuelve La base de datos en la que reside la colección.

Devuelve:

Desde:

  • 2.0.0



44
45
46
# Archivo 'lib/mongo/collection.rb', línea 44

def database
  @database
end

#nombrestring (solo lectura)

Devuelve El nombre de la colección.

Devuelve:

  • (string)

    El nombre de la colección.

Desde:

  • 2.0.0



47
48
49
# Archivo 'lib/mongo/collection.rb', línea 47

def Nombre
  @name
end

#opcionesHash (solo lectura)

Devuelve las opciones de la colección.

Devuelve:

  • (encriptada)

    Las opciones de colección.

Desde:

  • 2.0.0



50
51
52
# Archivo 'lib/mongo/collection.rb', línea 50

def opciones
  @options
end

Detalles del método de instancia

#==(another) ⇒ verdadero | falso

Comprueba si una colección es igual a otro objeto. Verificará la igualdad entre el nombre y la base de datos.

Ejemplos:

Comprobar la igualdad de la colección.

collection == other

Parámetros:

  • Otros (objeto)

    El objeto para comprobar.

Devuelve:

  • (true | false)

    Si los objetos son iguales.

Desde:

  • 2.0.0



89
90
91
92
93
# Archivo 'lib/mongo/collection.rb', línea 89

def ==(Otros)
  return false a menos que Otros.is_a?(Colección)

  Nombre == Otros.Nombre && database == Otros.database && opciones == Otros.opciones
end

#aggregate(pipeline, options = {}) ⇒ View::agregación

Realiza una agregación en la colección.

Ejemplos:

Realizar una agregación.

collection.aggregate([ { "$group" => { "_id" => "$city", "tpop" => { "$sum" => "$pop" }}} ])

Parámetros:

  • pipeline (arreglo<Hash>)

    La pipeline de agregación.

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

    Las opciones de agregación.

Opciones Hash (options):

  • permite_uso_de_disco (true | false)

    Establece en "true" si se permite el uso del disco durante la agregación.

  • :batch_size (Integer)

    El número de documentos a devolver por agrupar.

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • intercalación (encriptada)

    La intercalación para usar.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • :hint (string)

    El índice que se utilizará para la agregación.

  • :let (encriptada)

    Asignación de variables para usar en el pipeline. Consulta la documentación del servidor para más detalles.

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para que se ejecute la query, en milisegundos. Esta opción está obsoleta, utiliza :timeout_ms en su lugar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

Desde:

  • 2.1.0



567
568
569
# Archivo 'lib/mongo/collection.rb', línea 567

def Agregar(pipeline, opciones = {})
  vista.Nuevo(sí mismo, {}, opciones).Agregar(pipeline, opciones)
end

#bulk_write(solicitudes, opciones = {}) ⇒ BulkWrite::Result

Ejecute un lote de operaciones de escritura masiva.

Ejemplos:

Ejecuta un guardar masivo.

collection.bulk_write(operations, options)

Parámetros:

  • solicitud (Enumerable<Hash>)

    Las solicitudes de escritura masiva.

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

    Las opciones.

Opciones Hash (options):

  • :ordered (true | false)

    Si las operaciones deben ejecutarse en orden.

  • conformidad_de_lectura (encriptada)

    Las opciones de nivel de confirmación de escritura (write concern). Puede ser :w => Entero, :fsync => Booleano, :j => Booleano.

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • :: sesión (Sesión)

    La sesión a utilizar para el conjunto de operaciones.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

Devuelve:

Desde:

  • 2.0.0



939
940
941
# Archivo 'lib/mongo/collection.rb', línea 939

def bulk_write(solicitud, opciones = {})
  Guardado masivo.Nuevo(sí mismo, solicitud, opciones).ejecutar
end

#¿limitado?true | false

¿La colección tiene un límite?

Ejemplos:

¿La colección tiene un límite?

collection.capped?

Devuelve:

  • (true | false)

    Si la colección está limitada.

Desde:

  • 2.0.0



317
318
319
320
321
# Archivo 'lib/mongo/collection.rb', línea 317

def ¿limitado?
  database.list_collections(filtro: { nombre: Nombre })
          .primero
          &.dig('options', CAPITALIZADO) || false
end

#count(filter = nil, options = {}) ⇒ Integer

Obsoleto.

Utiliza #count_documents o estimated_document_count en su lugar. Sin embargo, tenga en cuenta que los siguientes operadores deberán ser sustituidos al cambiar a #count_documents:

* $where should be replaced with $expr
* $near should be replaced with $geoWithin with $center
* $nearSphere should be replaced with $geoWithin with $centerSphere

Obtiene un número estimado de documentos coincidentes en la colección.

Ejemplos:

Obtener el recuento.

collection.count(name: 1)

Parámetros:

  • filtro (encriptada) (valor por defecto: nil)

    Un filtro para hacer coincidir documentos.

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

    Las opciones de recuento.

Opciones Hash (options):

  • :hint (encriptada)

    El índice a utilizar.

  • :limit (Integer)

    El número máximo de documentos que se deben contar.

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para que se ejecute la query, en milisegundos. Esta opción está obsoleta, utiliza :timeout_ms en su lugar.

  • Omitir (Integer)

    El número de documentos que se deben omitir antes de contar.

  • :leer (encriptada)

    Las opciones de preferencia de lectura.

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

  • (Número entero)

    El recuento de documentos.

Desde:

  • 2.1.0



681
682
683
# Archivo 'lib/mongo/collection.rb', línea 681

def count(filtro = nulo, opciones = {})
  vista.Nuevo(sí mismo, filtro || {}, opciones).count(opciones)
end

#count_documents(filtro = {}, options = {}) ⇒ Integer

Obtiene el número de documentos que coinciden con la query. A diferencia del método obsoleto #count, este devolverá el número exacto de documentos que coinciden con el filtro (o el número exacto de documentos en la colección, si no se proporciona un filtro) en lugar de una estimación.

Utilice #estimated_document_count para recuperar una estimación del número de documentos en la colección utilizando los metadatos de la colección.

Parámetros:

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

    Un filtro para hacer coincidir documentos.

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

    Opciones para la operación.

Opciones Hash (options):

  • Omitir (Integer)

    El número de documentos que se deben omitir.

  • :hint (encriptada)

    Anule la selección por defecto del índice y obligue a MongoDB a usar un índice específico para la query.

  • :limit (Integer)

    Número máximo de Docs a contar.

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para que se ejecute el comando.

  • :leer (encriptada)

    Las opciones de preferencia de lectura.

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

  • (Número entero)

    El recuento de documentos.

Desde:

  • 2.6.0



715
716
717
# Archivo 'lib/mongo/collection.rb', línea 715

def contar_documentos(filtro = {}, opciones = {})
  vista.Nuevo(sí mismo, filtro, opciones).contar_documentos(opciones)
end

#crear(opts = {}) ⇒ Resultado

Forzar la creación de la colección en la base de datos.

Ejemplos:

Forzar la creación de la colección.

collection.create

Parámetros:

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

    Las opciones para la operación de creación.

Opciones Hash (opts):

  • capped (true | false)

    Crea una colección de tamaño fijo.

  • Imágenes previas y posteriores de :change_stream (encriptada)

    Se utiliza para habilitar las imágenes previas y posteriores en la colección creada. El hash puede tener los siguientes elementos:

    • :enabled -- verdadero o falso.
  • :clustered_index (encriptada)

    Crear un índice clúster. Esta opción especifica cómo se debe agrupar esta colección en _id. El hash puede tener los siguientes elementos:

    • :key -- El campo clave del índice agrupado. Debe estar configurado en { _id: 1 }.
    • :unique -- Debe configurarse en verdadero. La colección no aceptará documentos insertados o actualizados donde el valor de la clave de índice agrupado coincida con un valor existente en el índice.
    • :name -- Opcional. Un nombre que identifica de manera única el índice agrupado.
  • intercalación (encriptada)

    La intercalación para usar al crear la colección. Esta opción no se enviará al servidor al llamar a los métodos de colección.

  • :encrypted_fields (encriptada)

    Hash que describe campos cifrados para Queryable Encryption.

  • expire_after (Integer)

    Un número que indica después de cuántos segundos se deben eliminar los datos antiguos de series de tiempo.

  • max: (Integer)

    El número máximo de documentos en una colección con tamaño fijo. El límite de tamaño tiene precedencia sobre el máximo.

  • pipeline (arreglo<Hash>)

    Un arreglo de etapas de pipeline. Se creará una vista aplicando esta pipeline a la colección o vista view_on.

  • :: sesión (Sesión)

    La sesión a utilizar para la operación.

  • tamaño: (Integer)

    El tamaño de la colección con tamaño fijo.

  • series_temporales (encriptada)

    Crea una colección de series de tiempo. El hash puede tener los siguientes elementos:

    • :timeField -- El nombre del campo que contiene la fecha en cada documento de serie de tiempo.
    • :metaField: el nombre del campo que contiene metadatos en cada documento de serie de tiempo.
    • :granularity: se debe establecer la granularidad en el valor que mejor se ajuste al intervalo de tiempo transcurrido entre mediciones entrantes consecutivas. Los valores posibles son "segundos" (por defecto), "minutos" y "horas".
  • :validator (encriptada)

    Hash que describe las opciones de validación de documentos para la colección.

  • :view_on (string)

    El nombre de la colección o vista de origen desde la cual crear una vista.

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

Devuelve:

  • (Result)

    El resultado del comando.

Desde:

  • 2.0.0



378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
# Archivo 'lib/mongo/collection.rb', línea 378

def Cree(opciones = {})
  # Pasar opciones de lectura al comando create causa que se rompa.
  # Filtra las opciones de lectura. La sesión también está excluida aquí ya que se obtiene
  # usado por la llamada a with_session y no debe ser parte de la
  # operación. Si se pasa a la operación, fallaría BSON
  # serialización.
  # TODO poner la lista de opciones de lectura en una constante a nivel de clase cuando
  # descubrimos cuál es el conjunto completo de ellos.
  opciones = encriptada[sí mismo.opciones.fusionar(opciones).rechazar hacer |llave, _valor|
    %w[Lea read_preference read_concern sesión].incluir?(llave.to_s)
  end]
  # Convertir las opciones de Ruby al estilo de servidor.
  CREATE_COLLECTION_OPTIONS.cada hacer |ruby_key, server_key|
    opciones[server_key] = opciones.borrar(ruby_key) si opciones.key?(ruby_key)
  end
  Operación = { crear: Nombre }.fusionar(opciones)
  Operación.borrar(guardar)
  Operación.borrar(conformidad_de_lectura)
  Cliente.enviar(con_sesión, opciones) hacer |sesión|
    write_concern = si opciones[conformidad_de_lectura]
                      Nivel de confirmación de escritura (write concern).Obtener(opciones[conformidad_de_lectura])
                    else
                      sí mismo.write_concern
                    end

    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión
    )
    Operación = Operación::Crear.Nuevo(
      selector: Operación,
      db_name: database.Nombre,
      write_concern: write_concern,
      sesión: sesión,
      # Tenga en cuenta que estas son opciones de colección, la intercalación no lo es
      # tomado de las opciones pasadas al método de creación.
      intercalación: opciones[intercalación] || opciones['intercalación'],
      validator: opciones[:validator]
    )
    trazador.trace_operation(Operación, context, op_name: 'createCollection') hacer
      maybe_create_qe_collections(opciones[:encrypted_fields], Cliente, sesión) hacer |encrypted_fields|
        Operación.encrypted_fields = encrypted_fields
        Operación.ejecutar(
          siguiente_principal(nulo, sesión),
          context: context
        )
      end
    end
  end
end

#delete_many(filtro = nil, opciones = {}) ⇒ Result

Remover documentos de la colección.

Ejemplos:

Remover varios documentos de la colección.

collection.delete_many

Parámetros:

  • filtro (encriptada) (valor por defecto: nil)

    El filtro que se debe utilizar.

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

    Las opciones.

Opciones Hash (options):

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

Devuelve:

  • (Result)

    La respuesta de la base de datos.

Desde:

  • 2.1.0



991
992
993
# Archivo 'lib/mongo/collection.rb', línea 991

def borrar_varios(filtro = nulo, opciones = {})
  buscar(filtro, opciones).borrar_varios(opciones)
end

#delete_one(filtro = nil, options = {}) ⇒ Result

Remover un documento de la colección.

Ejemplos:

Remueve un solo documento de la colección.

collection.delete_one

Parámetros:

  • filtro (encriptada) (valor por defecto: nil)

    El filtro que se debe utilizar.

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

    Las opciones.

Opciones Hash (options):

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

Devuelve:

  • (Result)

    La respuesta de la base de datos.

Desde:

  • 2.1.0



965
966
967
# Archivo 'lib/mongo/collection.rb', línea 965

def delete_one(filtro = nulo, opciones = {})
  buscar(filtro, opciones).delete_one(opciones)
end

#distinct(nombre_del_campo, filtro = nil, opciones = {}) ⇒ Array<Object>

Obtén una lista de valores distintos para un campo específico.

Ejemplos:

Obtén los valores distintos.

collection.distinct('name')

Parámetros:

  • field_name (Símbolo, String)

    El nombre del campo.

  • filtro (encriptada) (valor por defecto: nil)

    Los documentos de los que se recuperarán los valores distintos.

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

    Las opciones de comando distintas.

Opciones Hash (options):

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para que se ejecute la query, en milisegundos. Esta opción está obsoleta, utiliza :timeout_ms en su lugar.

  • :leer (encriptada)

    Las opciones de preferencia de lectura.

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

  • (arreglo<Object>)

    La lista de valores distintos.

Desde:

  • 2.1.0



767
768
769
# Archivo 'lib/mongo/collection.rb', línea 767

def distinct(field_name, filtro = nulo, opciones = {})
  vista.Nuevo(sí mismo, filtro || {}, opciones).distinct(field_name, opciones)
end

#descartar(opts = {}) ⇒ Result

Nota:

Se suprime un error devuelto si la colección no existe.

Descarte la colección. También descartará todos los índices asociados con la colección, así como las colecciones asociadas compatibles con Queryable Encryption.

Ejemplos:

Descarta la colección.

collection.drop

Parámetros:

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

    Las opciones para la operación de descartar.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :: sesión (Sesión)

    La sesión a utilizar para la operación.

  • conformidad_de_lectura (encriptada)

    Las opciones de nivel de confirmación de escritura (write concern).

  • :encrypted_fields (Hash | nil)

    Hash de campos cifrados que fue proporcionado al asistente de la colección create.

Devuelve:

  • (Result)

    El resultado del comando.

Desde:

  • 2.0.0



451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
# Archivo 'lib/mongo/collection.rb', línea 451

def descartar(opciones = {})
  Cliente.con_sesión(opciones) hacer |sesión|
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      operation_timeouts: operation_timeouts(opciones)
    )
    temp_write_concern = write_concern
    write_concern = si opciones[conformidad_de_lectura]
                      Nivel de confirmación de escritura (write concern).Obtener(opciones[conformidad_de_lectura])
                    else
                      temp_write_concern
                    end
    Operación = Operación::Descartar.Nuevo({
                                      selector: { descartar: Nombre },
                                      db_name: database.Nombre,
                                      write_concern: write_concern,
                                      sesión: sesión,
                                    })
    trazador.trace_operation(Operación, context, op_name: 'dropCollection') hacer
      maybe_drop_emm_collections(opciones[:encrypted_fields], Cliente, sesión) hacer
        do_drop(Operación, sesión, context)
      end
    end
  end
end

#estimated_document_count(opciones = {}) ⇒ Integer

Obtiene una estimación de la cantidad de documentos en la colección usando los metadatos de la colección.

Utilice #count_documents para recuperar el número exacto de documentos en la colección, o para contabilizar documentos que coincidan con un filtro.

Parámetros:

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

    Opciones para la operación.

Opciones Hash (options):

  • max_time_ms (Integer)

    El tiempo máximo permitido para que el comando se ejecute en el servidor.

  • :leer (encriptada)

    Las opciones de preferencia de lectura.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

  • (Número entero)

    El recuento de documentos.

Desde:

  • 2.6.0



740
741
742
# Archivo 'lib/mongo/collection.rb', línea 740

def estimated_document_count(opciones = {})
  vista.Nuevo(sí mismo, {}, opciones).estimated_document_count(opciones)
end

#find(filtro = nil, options = {}) ⇒ CollectionView

Buscar documentos en la colección.

Ejemplos:

Encuentre documentos en la colección mediante un selector.

collection.find(name: 1)

Obten todos los documentos en una colección.

collection.find

Parámetros:

  • filtro (encriptada) (valor por defecto: nil)

    El filtro a usar en la función find.

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

    Las opciones para el find.

Opciones Hash (options):

  • permite_uso_de_disco (true | false)

    Cuando se establece en true, el servidor puede guardar datos temporales en el disco mientras ejecuta la operación de búsqueda. Esta opción solo está disponible en las versiones 4.4 y posteriores del servidor MongoDB.

  • permitir_resultados_parciales (true | false)

    Permite que la query obtenga resultados parciales si algunas particiones están fuera de servicio.

  • :batch_size (Integer)

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

  • intercalación (encriptada)

    La intercalación para usar.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • tipo_de_cursor (:tailable, :tailable_await)

    El tipo de cursor a utilizar.

  • :limit (Integer)

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

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para que se ejecute la query, en milisegundos. Esta opción está obsoleta, utiliza :timeout_ms en su lugar.

  • :modifiers (encriptada)

    Un documento que contiene metaoperadores que modifican la salida o el comportamiento de una query.

  • :no_cursor_timeout (true | false)

    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.

  • oplog_replay (true | false)

    Solo para uso interno de replicación. Las aplicaciones no deben establecer esta opción.

  • :proyección (encriptada)

    Los campos que se deben incluir o excluir de cada documento en el conjunto de resultados.

  • :: sesión (Sesión)

    La sesión para usar.

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

  • :timeout_mode (:cursor_lifetime | :iteration)

    Cómo interpretar :timeout_ms (si se aplica a la vida útil del cursor o a cada iteración).

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

Devuelve:

  • (CollectionView)

    La vista de colección.

Desde:

  • 2.0.0



531
532
533
# Archivo 'lib/mongo/collection.rb', línea 531

def buscar(filtro = nulo, opciones = {})
  vista.Nuevo(sí mismo, filtro || {}, opciones)
end

#find_one_and_delete(filtro, opciones = {}) ⇒ BSON::Document?

Encuentra un solo documento en la base de datos a través de findAndModify y lo elimina, devolviendo el documento original.

Ejemplos:

encontrar un documento y elimínalo.

collection.find_one_and_delete(name: 'test')

Parámetros:

  • filtro (encriptada)

    El filtro que se debe utilizar.

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

    Las opciones.

Opciones Hash (options):

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para que se ejecute la query, en milisegundos. Esta opción está obsoleta, utiliza :timeout_ms en su lugar.

  • :proyección (encriptada)

    Los campos que se deben incluir o excluir en el documento devuelto.

  • :sort (encriptada)

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

  • conformidad_de_lectura (encriptada)

    Las opciones de nivel de confirmación de escritura (write concern). De forma predeterminada, se utiliza el nivel de confirmación de escritura (write concern) de la colección.

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

Devuelve:

  • (BSON::Document, nil)

    El documento, si se encuentra.

Desde:

  • 2.1.0



1164
1165
1166
# Archivo 'lib/mongo/collection.rb', línea 1164

def find_one_and_delete(filtro, opciones = {})
  buscar(filtro, opciones).find_one_and_delete(opciones)
end

#find_one_and_replace(filtro, reemplazo, opciones = {}) ⇒ BSON::Documento

Encuentra un solo documento y lo reemplaza, devolviendo el documento original a menos que se especifique lo contrario.

Ejemplos:

Encuentra un documento y reemplázalo, devolviendo el original.

collection.find_one_and_replace({ name: 'test' }, { name: 'test1' })

Encuentra un documento y reemplázalo, devolviendo el nuevo documento.

collection.find_one_and_replace({ name: 'test' }, { name: 'test1' }, :return_document => :after)

Parámetros:

  • filtro (encriptada)

    El filtro que se debe utilizar.

  • reemplazo (BSON::Document)

    El documento de reemplazo.

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

    Las opciones.

Opciones Hash (options):

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para ejecutar el comando en milisegundos.

  • :proyección (encriptada)

    Los campos que se deben incluir o excluir en el documento devuelto.

  • :sort (encriptada)

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

  • documento de retorno (Símbolo)

    Ya sea :before o :after.

  • inserción (true | false)

    Si se debe realizar una inserción si el documento no existe.

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • conformidad_de_lectura (encriptada)

    Las opciones de nivel de confirmación de escritura (write concern). De forma predeterminada, se utiliza el nivel de confirmación de escritura (write concern) de la colección.

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

Devuelve:

  • (BSON::Document)

    El documento.

Desde:

  • 2.1.0



1250
1251
1252
# Archivo 'lib/mongo/collection.rb', línea 1250

def find_one_and_replace(filtro, reemplazo, opciones = {})
  buscar(filtro, opciones).find_one_and_update(reemplazo, opciones)
end

#find_one_and_update(filter, update, options = {}) ⇒ BSON::Document

Encuentra un único documento a través de findAndModify y lo actualiza, devolviendo el documento original a menos que se indique lo contrario.

Ejemplos:

Encuentra un documento y actualízalo, devolviendo el original.

collection.find_one_and_update({ name: 'test' }, { "$set" => { name: 'test1' }})

Encuentra un documento y actualízalo, devolviendo el documento actualizado.

collection.find_one_and_update({ name: 'test' }, { "$set" => { name: 'test1' }}, :return_document => :after)

Parámetros:

  • filtro (encriptada)

    El filtro que se debe utilizar.

  • update (Hash | Array<Hash>)

    El documento de actualización o flujo de pasos (pipeline).

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

    Las opciones.

Opciones Hash (options):

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para ejecutar el comando en milisegundos.

  • :proyección (encriptada)

    Los campos que se deben incluir o excluir en el documento devuelto.

  • :sort (encriptada)

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

  • documento de retorno (Símbolo)

    Ya sea :before o :after.

  • inserción (true | false)

    Si se debe realizar una inserción si el documento no existe.

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • conformidad_de_lectura (encriptada)

    Las opciones de nivel de confirmación de escritura (write concern). De forma predeterminada, se utiliza el nivel de confirmación de escritura (write concern) de la colección.

  • intercalación (encriptada)

    La intercalación para usar.

  • :array_filters (arreglo)

    Un conjunto de filtros que especifica a qué elementos de un arreglo se debe aplicar una actualización.

  • :: sesión (Sesión)

    La sesión para usar.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

  • (BSON::Document)

    El documento.

Desde:

  • 2.1.0



1208
1209
1210
# Archivo 'lib/mongo/collection.rb', línea 1208

def find_one_and_update(filtro, update, opciones = {})
  buscar(filtro, opciones).find_one_and_update(update, opciones)
end

#indexes(options = {}) ⇒ Index::View

Obtén una vista de todos los índices de esta colección. Puede ser iterado o tener más operaciones.

Ejemplos:

Obtener la vista de índice.

collection.indexes

Parámetros:

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

    Opciones para obtener una lista de todos los índices.

Opciones Hash (options):

  • :: sesión (Sesión)

    La sesión para usar.

Devuelve:

Desde:

  • 2.0.0



784
785
786
# Archivo 'lib/mongo/collection.rb', línea 784

def indexes(opciones = {})
  Index::vista.Nuevo(sí mismo, opciones)
end

#insert_many(documentos, opciones = {}) ⇒ Result

Inserta los documentos proporcionados en la colección.

Ejemplos:

Inserte documentos en la colección.

collection.insert_many([{ name: 'test' }])

Parámetros:

  • Documentos (Enumerable<Hash>)

    Los documentos para insertar.

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

    Las opciones de inserción.

Opciones Hash (options):

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • :ordered (true | false)

    Si las operaciones deben ejecutarse en orden.

  • :: sesión (Sesión)

    La sesión a utilizar para la operación.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • conformidad_de_lectura (encriptada)

    Las opciones de nivel de confirmación de escritura (write concern). Puede ser :w => Entero, :fsync => Booleano, :j => Booleano.

Devuelve:

  • (Result)

    El contenedor de respuesta de la base de datos.

Desde:

  • 2.0.0



907
908
909
910
911
912
# Archivo 'lib/mongo/collection.rb', línea 907

def insert_many(Documentos, opciones = {})
  QueryCache.clear_namespace(namespace)

  inserts = Documentos.map { |doc| { insert_one: doc } }
  bulk_write(inserts, opciones)
end

#insert_one(document, opts = {}) ⇒ Result

Inserta un solo documento en la colección.

Ejemplos:

Inserte un documento en la colección.

collection.insert_one({ name: 'test' })

Parámetros:

  • Documento (encriptada)

    El documento a insertar.

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

    Las opciones de inserción.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • :: sesión (Sesión)

    La sesión a utilizar para la operación.

  • conformidad_de_lectura (encriptada)

    Las opciones de nivel de confirmación de escritura (write concern). Puede ser :w => Entero, :fsync => Booleano, :j => Booleano.

Devuelve:

  • (Result)

    El contenedor de respuesta de la base de datos.

Desde:

  • 2.0.0



845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
# Archivo 'lib/mongo/collection.rb', línea 845

def insert_one(Documento, opciones = {})
  QueryCache.clear_namespace(namespace)

  Cliente.con_sesión(opciones) hacer |sesión|
    write_concern = si opciones[conformidad_de_lectura]
                      Nivel de confirmación de escritura (write concern).Obtener(opciones[conformidad_de_lectura])
                    else
                      write_concern_with_session(sesión)
                    end

    propagar ArgumentError, 'El documento a insertar no puede ser nulo' si Documento.nil?

    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      operation_timeouts: operation_timeouts(opciones)
    )
    Operación = Operación::Insert.Nuevo(
      documento: [ Documento ],
      db_name: database.Nombre,
      coll_name: Nombre,
      write_concern: write_concern,
      bypass_document_validation: !!opciones[:evitar_validación_del_documento],
      opciones: opciones,
      id_generator: Cliente.opciones[generador_de_id],
      sesión: sesión,
      comment: opciones[:comment]
    )
    trazador.trace_operation(Operación, context) hacer
      escribir_con_reintento(write_concern, context: context) hacer |Conexión, txn_num, context|
        Operación.txn_num = txn_num
        Operación.execute_with_connection(Conexión, context: context)
      end
    end
  end
end

#inspectString

Obtén una revisión de la colección con impresión elegante string.

Ejemplos:

Inspeccionar la colección.

collection.inspect

Devuelve:

  • (string)

    La inspección de la colección.

Desde:

  • 2.0.0



818
819
820
# Archivo 'lib/mongo/collection.rb', línea 818

def inspeccionar
  "#<Mongo::Collection:0x#{object_id} namespace=#{namespace}>"
end

#namespaceString

Obtener el namespace completamente calificado de la colección.

Ejemplos:

Obtén el namespace completamente calificado.

collection.namespace

Devuelve:

  • (string)

    El namespace de la colección.

Desde:

  • 2.0.0



1262
1263
1264
# Archivo 'lib/mongo/collection.rb', línea 1262

def namespace
  "#{base de datos.nombre}.#{nombre}"
end

#operation_timeouts(opts = {}) ⇒ Hash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el valor de timeout_ms establecido a nivel de la operación (si lo hay), y/o timeout_ms que se establece a nivel de colección/base de datos/cliente (si lo hay).

Devuelve:

  • (encriptada)

    valor timeout_ms establecido a nivel de operación (si lo hay) y/o timeout_ms establecido a nivel de colección/base de datos/cliente (si lo hay).

Desde:

  • 2.0.0



1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
# Archivo 'lib/mongo/collection.rb', línea 1287

def operation_timeouts(opciones = {})
  # TODO: Deberíamos volver a evaluar si necesitamos dos tiempos de espera por separado.
  {}.tocar hacer |Resultado|
    si opciones[:timeout_ms].nil?
      Resultado[timeout_inherente_ms] = timeout_ms
    else
      Resultado[:operation_timeout_ms] = opciones.borrar(:timeout_ms)
    end
  end
end

#parallel_scan(cursor_count, options = {}) ⇒ arreglo<Cursor>

Ejecuta un escaneo paralelo en la colección.

Devuelve una lista de hasta cursor_count cursores que pueden ser iterados de forma concurrente. Siempre que la colección no se modifique durante el escaneo, cada documento aparecerá una vez en uno de los conjuntos de resultados de los cursores.

Ejemplos:

Ejecute un escaneo paralelo de la colección.

collection.parallel_scan(2)

Parámetros:

  • cursor_count (Número entero)

    El número máximo de cursores a devolver.

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

    Las opciones del comando de escaneo paralelo.

Opciones Hash (options):

  • max_time_ms (Integer)

    La cantidad máxima de tiempo permitida para que se ejecute la query, en milisegundos. Esta opción está obsoleta, utiliza :timeout_ms en su lugar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :timeout_mode (:cursor_lifetime | :iteration)

    Cómo interpretar :timeout_ms (si se aplica a la vida útil del cursor o a cada iteración).

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

  • (Array<cursor>)

    Un arreglo de cursores.

Desde:

  • 2.1



1022
1023
1024
# Archivo 'lib/mongo/collection.rb', línea 1022

def exploración paralela(cursor_count, opciones = {})
  buscar({}, opciones).exploración paralela(cursor_count, opciones)
end

#read_concernHash

Obtén el nivel de consistencia de lectura efectivo para esta instancia de colección.

Si se proporcionó un nivel de consistencia de lectura en las opciones de la colección, se devolverá ese nivel de consistencia de lectura; de lo contrario, se devolverá el nivel de consistencia de lectura efectivo de la base de datos.

Ejemplos:

Obtén el nivel de consistencia de lectura.

collection.read_concern

Devuelve:

  • (encriptada)

    El nivel de consistencia de lectura.

Desde:

  • 2.2.0



194
195
196
# Archivo 'lib/mongo/collection.rb', línea 194

def read_concern
  opciones[:read_concern] || database.read_concern
end

#read_preferenceHash

Obtenga la preferencia de lectura efectiva para esta colección.

Si se proporcionó una preferencia de lectura en las opciones de la colección, se devolverá esa preferencia de lectura; de lo contrario, se devolverá la preferencia de lectura efectiva de la base de datos.

Ejemplos:

Obtén la preferencia de lectura.

collection.read_preference

Devuelve:

  • (encriptada)

    La preferencia de lectura.

Desde:

  • 2.0.0



222
223
224
# Archivo 'lib/mongo/collection.rb', línea 222

def read_preference
  @read_preference ||= opciones[:leer] || database.read_preference
end

#replace_one(filtro, reemplazo, opciones = {}) ⇒ Resultado

Reemplaza un solo documento en la colección con el nuevo documento.

Ejemplos:

Reemplaza un solo documento.

collection.replace_one({ name: 'test' }, { name: 'test1' })

Parámetros:

  • filtro (encriptada)

    El filtro que se debe utilizar.

  • reemplazo (encriptada)

    El documento de reemplazo..

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

    Las opciones.

Opciones Hash (options):

  • inserción (true | false)

    Si se debe realizar una inserción si el documento no existe.

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • intercalación (encriptada)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

  • :sort (encriptada)

    Especifica qué documento reemplaza la operación si la query coincide con varios documentos. El primer documento coincidente según el orden de clasificación será reemplazado. Esta opción solo está soportada por los servidores >= 8.0. Los servidores más antiguos reportarán un error por usar esta opción.

Devuelve:

  • (Result)

    La respuesta de la base de datos.

Desde:

  • 2.1.0



1058
1059
1060
# Archivo 'lib/mongo/collection.rb', línea 1058

def replace_one(filtro, reemplazo, opciones = {})
  buscar(filtro, opciones).replace_one(reemplazo, opciones)
end

#search_indexes(opciones = {}) ⇒ SearchIndex::View

Nota:

Solo se puede proporcionar uno de id o name; es un error especificar ambos, aunque ambos pueden omitirse sin problemas.

Obtenga una vista de todos los índices de búsqueda para esta colección. Puede ser iterado u operado directamente. Si se proporciona el ID o el nombre, el iterador devolverá solo el índice indicado. Para todas las demás operaciones, se omiten el ID y el nombre.

Parámetros:

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

    Las opciones a emplear para configurar la vista.

Opciones Hash (options):

  • :id (string)

    El ID del índice específico a query (opcional)

  • nombre (string)

    El nombre del índice específico a query (opcional)

  • :aggregate (encriptada)

    El hash de opciones para pasar a la orden de agregación (opcional)

Devuelve:

Desde:

  • 2.0.0



806
807
808
# Archivo 'lib/mongo/collection.rb', línea 806

def search_indexes(opciones = {})
  searchIndex::vista.Nuevo(sí mismo, opciones)
end

#server_selectorMongo::ServerSelector

Obtén el selector de servidor para esta colección.

Ejemplos:

Obtenga el selector de servidor.

collection.server_selector

Devuelve:

Desde:

  • 2.0.0



206
207
208
# Archivo 'lib/mongo/collection.rb', línea 206

def selector_de_servidor
  @server_selector ||= ServerSelector.Obtener(read_preference || database.selector_de_servidor)
end

#system_collection?Booleano

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Indica si la colección es una colección del sistema.

Devuelve:

  • (booleano)

    Si el sistema es una colección de sistemas.

Desde:

  • 2.0.0



1271
1272
1273
# Archivo 'lib/mongo/collection.rb', línea 1271

def system_collection?
  Nombre.start_with?('system.')
end

#timeout_msInteger | nil

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve Operation timeout que es para esta base de datos o para el cliente correspondiente.

Devuelve:

  • (Integer | nil)

    Tiempo de espera de la operación que es para esta base de datos o para el cliente correspondiente.

Desde:

  • 2.0.0



1279
1280
1281
# Archivo 'lib/mongo/collection.rb', línea 1279

def timeout_ms
  @timeout_ms || database.timeout_ms
end

#update_many(filter, update, options = {}) ⇒ Result

Actualizar documentos en la colección.

Ejemplos:

Actualiza varios documentos en la colección.

collection.update_many({ name: 'test'}, '$set' => { name: 'test1' })

Parámetros:

  • filtro (encriptada)

    El filtro que se debe utilizar.

  • update (Hash | Array<Hash>)

    El documento de actualización o flujo de pasos (pipeline).

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

    Las opciones.

Opciones Hash (options):

  • inserción (true | false)

    Si se debe realizar una inserción si el documento no existe.

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • intercalación (encriptada)

    La intercalación para usar.

  • :array_filters (arreglo)

    Un conjunto de filtros que especifica a qué elementos de un arreglo se debe aplicar una actualización.

  • :: sesión (Sesión)

    La sesión para usar.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

Devuelve:

  • (Result)

    La respuesta de la base de datos.

Desde:

  • 2.1.0



1091
1092
1093
# Archivo 'lib/mongo/collection.rb', línea 1091

def update_many(filtro, update, opciones = {})
  buscar(filtro, opciones).update_many(update, opciones)
end

#update_one(filter, update, options = {}) ⇒ Result

Actualiza un solo documento en la colección.

Ejemplos:

Actualiza un solo documento en la colección.

collection.update_one({ name: 'test'}, '$set' => { name: 'test1'})

Parámetros:

  • filtro (encriptada)

    El filtro que se debe utilizar.

  • update (Hash | Array<Hash>)

    El documento de actualización o flujo de pasos (pipeline).

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

    Las opciones.

Opciones Hash (options):

  • inserción (true | false)

    Si se debe realizar una inserción si el documento no existe.

  • :evitar_validación_del_documento (true | false)

    Decidir si omitir o no la validación a nivel de documento.

  • intercalación (encriptada)

    La intercalación para usar.

  • :array_filters (arreglo)

    Un conjunto de filtros que especifica a qué elementos de un arreglo se debe aplicar una actualización.

  • :: sesión (Sesión)

    La sesión para usar.

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

  • :hint (Hash | String)

    El índice a utilizar para esta operación. Puede especificarse como un Hash (por ejemplo, { _id: 1 }) o una string (por ejemplo, "ID").

  • :let (encriptada)

    Mapeo de variables para usar en el comando. Consulta la documentación del servidor para más detalles.

  • :sort (encriptada)

    Especifica qué documento actualiza la operación si la query coincide con varios documentos. Se actualizará el primer documento que coincida con el orden de clasificación. Esta opción solo está soportada por los servidores >= 8.0. Los servidores más antiguos reportarán un error por usar esta opción.

Devuelve:

  • (Result)

    La respuesta de la base de datos.

Desde:

  • 2.1.0



1129
1130
1131
# Archivo 'lib/mongo/collection.rb', línea 1129

def update_one(filtro, update, opciones = {})
  buscar(filtro, opciones).update_one(update, opciones)
end

#observar(pipeline = [], options = {}) ⇒ ChangeStream

Nota:

Un flujo de cambios solo permite un nivel de consistencia de lectura "mayoría".

Nota:

Este método asistente es preferible a ejecutar una agregación sin procesar con una etapa de $changeStream, con el fin de soportar la capacidad de reanudación.

Permite que los usuarios soliciten que se envíen notificaciones por todos los cambios en una colección específica.

Ejemplos:

Reciba notificaciones de cambios para una colección dada.

collection.watch([{ '$match' => { operationType: { '$in' => ['insert', 'replace'] } } }])

Parámetros:

  • pipeline (arreglo<Hash>) (valor por defecto: [])

    Operadores opcionales de filtro adicional.

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

    Las opciones de flujo de cambios.

Opciones Hash (options):

  • documento_completo (string)

    Valores permitidos: nil, 'por defecto', 'updateLookup', 'cuando esté disponible', 'requerido'.

    El valor por defecto es no enviar un valor (es decir, nil), el cual es equivalente a 'por defecto'. Por defecto, la notificación de cambio para actualizaciones parciales incluirá un delta que describa los cambios en el documento.

    Cuando se establece en 'updateLookup', la notificación de cambio para actualizaciones parciales incluirá tanto un delta que describe los cambios en el documento como una copia de todo el documento que se modificó en algún momento después de que se haya producido el cambio.

    Cuando se configura en "cuando esté disponible", configura el flujo de cambios para devolver la post-imagen del documento modificado para eventos de cambio de reemplazo y actualización si la post-imagen para este evento está disponible.

    Cuando se establece en 'obligatorio', el comportamiento es el mismo que el de 'whenAvailable', excepto que se produce un error si la imagen de publicación no está disponible.

  • documento_completo_antes_de_modificar (string)

    Valores permitidos: nil, 'whenAvailable', 'required', 'off'.

    El valor por defecto es no enviar un valor (es decir, nil), que es equivalente a 'apagado'.

    Cuando se establece en 'whenAvailable', configura el flujo de cambios para devolver la preimagen del documento modificado para los eventos de cambio de reemplazo, actualización y eliminación si está disponible.

    Cuando se establece en 'requerido', el mismo comportamiento que "whenAvailable" excepto que se genera un error si la preimagen no está disponible.

  • :resume_after (BSON::Document, Hash)

    Especifica el punto de partida lógico para el nuevo flujo de cambios.

  • ; tiempo_máximo_espera_ms (Integer)

    El tiempo máximo que el servidor espera documentos nuevos para satisfacer una query de flujo de cambios.

  • :batch_size (Integer)

    El número de documentos a devolver por agrupar.

  • intercalación (BSON::Document, Hash)

    La intercalación para usar.

  • :: sesión (Sesión)

    La sesión para usar.

  • :start_at_operation_time (BSON::Timestamp)

    Devuelve solo los cambios que ocurrieron en o después de la fecha y hora especificada. Cualquier comando que se ejecute contra el servidor devolverá un tiempo de clúster que se puede utilizar aquí.

  • :comment (objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

  • Show expanded events (booleano)

    Permite que el servidor envíe la lista 'ampliada' de eventos de flujo de cambios. La lista de eventos adicionales incluidos con este conjunto de flags son: createIndexes, dropIndexes, modify, create, shardCollection, reshardCollection, refineCollectionShardKey.

  • :timeout_mode (:cursor_lifetime | :iteration)

    Cómo interpretar :timeout_ms (si se aplica a la vida útil del cursor o a cada iteración).

  • :timeout_ms (Integer)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Devuelve:

  • (ChangeStream)

    El objeto de flujo de cambios.

Desde:

  • 2.5.0



642
643
644
645
646
# Archivo 'lib/mongo/collection.rb', línea 642

def reloj(pipeline = [], opciones = {})
  view_options = opciones.dup
  view_options[tipo_de_cursor] = tailable_await si opciones[; tiempo_máximo_espera_ms]
  vista::ChangeStream.Nuevo(vista.Nuevo(sí mismo, {}, view_options), pipeline, nulo, opciones)
end

#con(new_options) ⇒ Mongo::Collection

Devuelve una nueva instancia de colección.

Ejemplos:

Obtener una colección con un conjunto cambiado de nivel de consistencia de lectura.

collection.with(read_concern: { level: :majority })

Obtén una colección con un nivel de confirmación de escritura (write concern) cambiado.

collection.with(write_concern: { w:  3 })

Parámetros:

  • nuevas_opciones (encriptada)

    Las nuevas opciones a usar.

Opciones Hash (new_options):

  • :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.
  • :read_concern (encriptada)

    El hash de opciones de nivel de consistencia de lectura, con las siguientes claves opcionales:

    • :level -- el nivel de preferencia de lectura como símbolo; los valores válidos son :local, :majority y :snapshot
  • 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.

Devuelve:

Desde:

  • 2.1.0



299
300
301
302
303
304
305
306
307
# Archivo 'lib/mongo/collection.rb', línea 299

def con(nuevas_opciones)
  nuevas_opciones.claves.cada hacer |k|
    propagar Error::UnchangeableCollectionOption.Nuevo(k) a menos que OPCIONES MODIFICABLES.incluir?(k)
  end
  opciones = @options.dup
  opciones.borrar(guardar) si opciones[guardar] && nuevas_opciones[conformidad_de_lectura]
  opciones.borrar(conformidad_de_lectura) si opciones[conformidad_de_lectura] && nuevas_opciones[guardar]
  Colección.Nuevo(database, Nombre, opciones.update(nuevas_opciones))
end

#write_concernMongo::WriteConcern

Obtén el nivel de confirmación de escritura (write concern) efectivo en esta colección.

Si se proporcionó un nivel de confirmación de escritura (write concern) en las opciones de la colección, se devolverá ese nivel de confirmación de escritura (write concern); de lo contrario, se devolverá el nivel de confirmación de escritura (write concern) efectivo de la base de datos.

Ejemplos:

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

collection.write_concern

Devuelve:

Desde:

  • 2.0.0



238
239
240
241
242
# Archivo 'lib/mongo/collection.rb', línea 238

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

#write_concern_with_session(session) ⇒ Mongo::WriteConcern

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtenga el nivel de confirmación de escritura (write concern) para utilizar en una operación en esta colección, dada una sesión.

Si la sesión está en una transacción y la colección tiene un nivel de confirmación de escritura (write concern) no reconocido, remueva la opción :w del nivel de confirmación de escritura (write concern). De lo contrario, devuelve el nivel de confirmación de escritura (write concern) sin modificar.

Devuelve:

Desde:

  • 2.0.0



255
256
257
258
259
260
261
262
263
# Archivo 'lib/mongo/collection.rb', línea 255

def write_concern_with_session(sesión)
  wc = write_concern
  si sesión && sesión.en_transacción? && wc && !wc.¿entendido?
    opciones = wc.opciones.dup
    opciones.borrar(:w)
    return Nivel de confirmación de escritura (write concern).Obtener(opciones)
  end
  wc
end