Clase: Mongo::Cliente

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Registrable
Definido en:
lib/mongo/cliente.rb

Overview

El cliente es el punto de entrada al controlador y es el objeto principal con el que se interactuará.

Desde:

  • 2.0.0

Colapso delresumen constante

OPCIONES CRUD =

Las opciones que no afectan el comportamiento de un clúster y sus subcomponentes.

Desde:

  • 2.1.0

[
  :opciones de cifrado automático,
  :database,
  :leer, :read_concern,
  :escribir, :escribir_preocupación,
  :retry_reads, :máximo de reintentos de lectura, :intervalo de reintento de lectura,
  :retry_writes, :máximo de reintentos de escritura,

  # Opciones que actualmente no pueden estar aquí:
  #
  # :tiempo de espera de selección de servidor
  # El constructor del clúster utiliza el tiempo de espera de selección del servidor para determinar
  # cuánto tiempo hay que esperar para el escaneo inicial en modo de compatibilidad, pero una vez
  # el clúster se inicializa y ya no utiliza este tiempo de espera.
  # Desafortunadamente, el selector de servidor lee el tiempo de espera de selección del servidor fuera de
  # el clúster, y este comportamiento es necesario para Cluster#next_primary
  # que no acepta argumentos. Al eliminar next_primary, podemos volver a visitar
  # uso del mismo objeto de clúster con diferentes tiempos de espera para la selección de servidores.
].freeze
VALID_OPTIONS =

Opciones de cliente válidas.

Desde:

  • 2.1.2

[
  :nombre_de_la_aplicación,
  :mecánica de autenticación,
  :propiedades_mecánicas_de_autenticación,
  :fuente_de_autorización,
  :opciones de cifrado automático,
  :bg_error_backtrace,
  :limpieza,
  :compresores,
  :conexión directa,
  :conectar,
  :tiempo de espera de conexión,
  :database,
  :frecuencia_del_latido,
  :generador de id,
  :balanceo de carga,
  :umbral_local,
  :logger,
  :prefijo_de_registro,
  :max_conectando,
  :max_idle_time,
  :tamaño máximo de la piscina,
  :máximo de reintentos de lectura,
  :máximo de reintentos de escritura,
  :tamaño mínimo de la piscina,
  :escucha,
  :monitoring_io,
  :contraseña,
  :plataforma,
  :populator_io,
  :leer,
  :read_concern,
  :intervalo de reintento de lectura,
  :conjunto de réplicas,
  :resolv_opciones,
  :retry_reads,
  :retry_writes,
  :escanear,
  :sdam_proc,
  :server_api,
  :server_selection_timeout,
  :tiempo de espera del socket,
  :srv_max_hosts,
  :srv_nombre_del_servicio,
  :ssl,
  :certificado ssl_ca_cert,
  :objeto de certificado SSL CA,
  :cadena de certificado ssl_ca,
  :certificado_ssl,
  :objeto de certificado SSL,
  :ssl_cert_string,
  :ssl_key,
  :ssl_key_object,
  :frase_de_contraseña_de_clave_ssl,
  :cadena de claves SSL,
  :ssl_verify,
  :certificado_de_verificación_ssl,
  :ssl_verify_hostname,
  :ssl_verificar_punto_final_ocsp,
  :tiempo de espera_ms,
  :truncar_registros,
  :usuario,
  :tiempo de espera de la cola de espera,
  :bibliotecas_de_envoltura,
  :escribir,
  :escribir_preocupación,
  :nivel de compresión zlib,
].freeze
COMPRESORES VÁLIDOS =

Los algoritmos de compresión admitidos por el controlador.

Desde:

  • 2.5.0

[
  Mongo::Protocolo::Comprimido::ZSTD,
  Mongo::Protocolo::Comprimido::RÁPIDO,
  Mongo::Protocolo::Comprimido::ZLIB
].freeze
VERSIONES DE API DE SERVIDOR VÁLIDAS =

Las versiones conocidas de la API del servidor.

Desde:

  • 2.0.0

%w(
  1
).freeze

Constantes incluidas desde Loggable

Registrable::PREFIX

Colapso delresumen de atributos de instancia

Colapso delresumen del método de clase

Colapso del resumen del método de instancia

Métodos incluidos en Loggable

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

Detalles del constructor

#inicializar(direcciones_o_uri, opciones = nulo) ⇒ Cliente

Instancia un nuevo cliente de driver.

Ejemplos:

Crear una instancia de un único servidor o cliente mongos.

Mongo::Client.new(['127.0.0.1:27017'])

Crear una instancia de un cliente para un conjunto de réplicas.

Mongo::Client.new(['127.0.0.1:27017', '127.0.0.1:27021'])

Conectarse directamente a un mongod en un conjunto de réplicas

Mongo::Client.new(['127.0.0.1:27017'], :connect => :direct)
# without `:connect => :direct`, Mongo::Client will discover and
# connect to the replica set if given the address of a server in
# a replica set

Parámetros:

  • direcciones_o_uri (Matriz<String> | Cadena ) —

    La matriz de direcciones de servidor en formato host:puerto o una cadena de conexión URI de MongoDB.

  • opciones (Hash) (predeterminado: nulo)

    Las opciones que utilizará el cliente. Si también se proporciona una cadena de conexión URI de MongoDB, estas opciones prevalecen sobre cualquier opción análoga presente en la cadena URI.

Opciones Hash(opciones):

  • :nombre_de_la_aplicación (Cadena,Símbolo)

    Nombre de la aplicación que se imprime en los registros de mongod al establecer una conexión en las versiones del servidor >= 3.4.

  • :mecánica de autenticación (Símbolo)

    El mecanismo de autenticación a utilizar. Uno de los siguientes: :mongodb_cr, :mongodb_x509, :plain, :scram, :scram256

  • :propiedades_mecánicas_de_autenticación (Hash)
  • :fuente_de_autorización (Cadena)

    La fuente desde la cual se realizará la autenticación.

  • :bg_error_backtrace (verdadero | falso | nulo | entero)

    Experimental. Configúrelo como verdadero para registrar seguimientos completos de errores en subprocesos en segundo plano. Configúrelo como falso o nulo para no registrarlos. Proporcione un entero positivo para registrar hasta ese número de líneas de seguimiento.

  • :compresores (Matriz<String>)

    Una lista de posibles compresores, en orden de preferencia. El controlador elige el primer compresor compatible con el servidor. Actualmente, el controlador solo admite 'zstd', 'snappy' y 'zlib'.

  • :conexión directa (true | false)

    Si se conecta directamente a la semilla especificada, omitiendo el descubrimiento de topología. Se debe proporcionar exactamente una semilla.

  • :conectar (Símbolo)

    Obsoleto: use la opción :direct_connection en lugar de esta opción. El método de conexión a usar. Esto obliga al clúster a comportarse de la forma especificada en lugar de la detección automática. Uno de los siguientes: :direct, :replica_set, :sharded o :load_balanced. Si :connect se establece en :load_balanced, el controlador se comportará como si el servidor fuera un balanceador de carga, incluso si no está conectado a uno.

  • :tiempo de espera de conexión (Flotar)

    El tiempo de espera, en segundos, para intentar una conexión.

  • :database (Cadena)

    La base de datos a la que conectarse.

  • :frecuencia_del_latido (Flotar)

    El intervalo, en segundos, que tarda el monitor del servidor en actualizar su descripción mediante un saludo.

  • :generador de id (Objeto)

    Un objeto personalizado para generar identificadores de documentos. Debe responder a #generate.

  • :balanceo de carga (true | false)

    Si se espera conectarse a un balanceador de carga.

  • :umbral_local (Entero)

    Límite de umbral local en segundos para seleccionar un servidor cercano para una operación.

  • :logger (Registrador)

    Un registrador personalizado para utilizar.

  • :prefijo_de_registro (Cadena)

    Un prefijo de registro personalizado para usar al registrar. Esta opción es experimental y está sujeta a cambios en futuras versiones del controlador.

  • :max_conectando (Entero)

    El número máximo de conexiones que pueden conectarse simultáneamente. El valor predeterminado es 2. Esta opción debe aumentarse si hay muchos subprocesos que comparten el mismo cliente y la aplicación experimenta tiempos de espera mientras espera que se establezcan las conexiones. Al seleccionar un servidor para una operación, el valor predeterminado es 2.

  • :max_idle_time (Entero)

    Los segundos máximos que un socket puede permanecer inactivo desde que se ingresó en el clúster.

  • :tamaño máximo de la piscina (Entero)

    El tamaño máximo del pool de conexiones. Establecer esta opción en cero crea un grupo de conexiones ilimitado.

  • :máximo de reintentos de lectura (Entero)

    El número máximo de reintentos de lectura cuando se utilizan reintentos de lectura heredados.

  • :máximo de reintentos de escritura (Entero)

    El número máximo de reintentos de escritura cuando se utilizan reintentos de escritura heredados.

  • :tamaño mínimo de la piscina (Entero)

    El tamaño mínimo del grupo de conexiones.

  • :escucha (verdadero,falso)

    Si se especifica "false", el cliente se inicializa sin suscriptores globales a eventos SDAM y no publicará eventos SDAM. La monitorización de comandos y los eventos heredados se seguirán publicando, y el controlador seguirá ejecutando SDAM y monitorizando su clúster para seleccionar el servidor. El registro integrado de eventos SDAM del controlador se deshabilitará, ya que se implementa mediante suscripción a eventos SDAM. Client#subscribe se ejecutará correctamente para todos los tipos de eventos, pero no se invocarán los suscriptores a eventos SDAM. Los valores distintos de "false" resultan en el comportamiento predeterminado, que consiste en la publicación normal de eventos SDAM.

  • :monitoring_io (verdadero,falso)

    Para uso interno del driver solamente. Establezca en falso para impedir que este cliente o los servidores bajo su control realicen I/O relacionados con SDAM. Nota: si establece esta opción en falso, el cliente dejará de funcionar. Está destinado a usarse en pruebas en las que se invocan manualmente las transiciones de estado SDAM.

  • :limpieza (true | false)

    Solo para uso interno del controlador. Establézcalo en falso para evitar que se envíe el comando endSessions al servidor para limpiar las sesiones del servidor cuando el clúster se desconecta y para no iniciar el ejecutor periódico. Si :monitoring_io es falso, :cleanup también se establece automáticamente en falso por defecto.

  • :contraseña (Cadena)

    La contraseña del usuario.

  • :plataforma (Cadena)

    Información de la plataforma a incluir en los metadatos impresos en los registros de mongod al establecer una conexión en versiones de servidor >= 3.4.

  • :leer (Hash)

    Las opciones de preferencia de lectura. El hash puede contener los siguientes elementos:

    • :mode – preferencia de lectura especificada como un símbolo; los valores válidos son:primary,:primary_preferred,:secondary,:secondary_preferred y:nearest.

    • :tag_sets – una matriz de hashes.

    • :local_threshold.

  • :read_concern (Hash)

    La opción de lectura de inquietudes.

  • :intervalo de reintento de lectura (Flotar)

    El intervalo, en segundos, en el que se vuelven a intentar las lecturas en un mongos.

  • :conjunto de réplicas (Símbolo)

    El nombre del conjunto de réplicas al que se conectará. Los servidores que no estén en este conjunto serán ignorados.

  • :retry_reads (true | false)

    Si es verdadero, se habilitan las lecturas reintentables modernas (predeterminado). Si es falso, se deshabilitan las lecturas reintentables modernas y se habilitan las lecturas reintentables antiguas.

  • :retry_writes (true | false)

    Se reintenta la escritura una vez al conectarse a un conjunto de réplicas o a un clúster fragmentado con versiones 3.6 o superiores. (El valor predeterminado es "true").

  • :escanear (true | false)

    Si se deben analizar todas las semillas en el constructor. La versión del 2 controlador.x lo hace por defecto; la 3 versión.x no analizará las semillas en el constructor. Para activar el nuevo comportamiento, configure esta opción como "false". Nota: Si configura esta opción como "nil", se habilitará el análisis de semillas en el constructor en la 2 versión.x. La 3 versión.x reconocerá esta opción, pero la ignorará y nunca analizará las semillas en el constructor.

  • :sdam_proc (Proc)

    Un procedimiento que se invoca con el cliente como argumento antes de realizar la detección y monitorización del servidor. Úselo para configurar los escuchas de eventos de SDAM para que reciban los eventos publicados durante la construcción del cliente.

    Nota: el cliente no está completamente construido cuando se invoca sdam_proc, en particular el clúster es nulo en este momento. sdam_proc debe limitarse a llamar a los métodos #subscribe y #unsubscribe solo en el cliente.

  • :server_api (Hash)

    La versión de la API del servidor solicitada. Este hash puede contener los siguientes elementos:

    • :versión – cadena

    • :strict – booleano

    • :errores_de_deprecación – booleano

  • :server_selection_timeout (Entero)

    El tiempo de espera en segundos para seleccionar un servidor para una operación.

  • :tiempo de espera del socket (Flotar)

    El tiempo de espera, en segundos, para ejecutar operaciones en un socket. Esta opción está obsoleta; utilice :timeout_ms en su lugar.

  • :srv_max_hosts (Entero)

    El número máximo de mongoses con los que el driver se comunicará para topologías particionadas. Si esta opción es 0, entonces no habrá un número máximo de mongoses. Si el URI proporcionado se resuelve en más hosts que “:srv_max_hosts“, el cliente elegirá aleatoriamente un subconjunto de hosts del tamaño “:srv_max_hosts“.

  • :srv_nombre_del_servicio (Cadena)

    El nombre del servicio que se utilizará en la consulta DNS SRV.

  • :ssl (verdadero,falso)

    Si se debe utilizar TLS.

  • :certificado ssl_ca_cert (Cadena)

    El archivo que contiene los certificados de autoridad de certificación concatenados, utilizado para validar los certificados transmitidos desde el otro extremo de la conexión. Los certificados intermedios NO deben especificarse en los archivos referenciados por esta opción. Se requiere :ssl_ca_cert, :ssl_ca_cert_string o :ssl_ca_cert_object (en orden de prioridad) al usar :ssl_verify.

  • :objeto de certificado SSL CA (Matriz<OpenSSL::X509::Certificate>)

    Una matriz de objetos OpenSSL::X509::Certificate que representan los certificados de la autoridad de certificación utilizados para validar los certificados transmitidos desde el otro extremo de la conexión. Los certificados intermedios NO deben especificarse en los archivos referenciados por esta opción. Se requiere :ssl_ca_cert, :ssl_ca_cert_string o :ssl_ca_cert_object (en orden de prioridad) al usar :ssl_verify.

  • :cadena de certificado ssl_ca (Cadena)

    Cadena que contiene el certificado de la autoridad de certificación, utilizado para validar los certificados transmitidos desde el otro extremo de la conexión. Esta opción permite transmitir solo un certificado de CA al controlador. Los certificados intermedios NO deben especificarse en los archivos referenciados por esta opción. Se requiere uno de los siguientes: :ssl_ca_cert, :ssl_ca_cert_string o :ssl_ca_cert_object (en orden de prioridad) al usar :ssl_verify.

  • :certificado_ssl (Cadena)

    El archivo de certificado utilizado para identificar la conexión con MongoDB. Se puede pasar una cadena de certificados especificando primero el certificado del cliente, seguido de cualquier certificado intermedio hasta el certificado de la CA. El archivo también puede contener la clave privada del certificado, que se ignorará. Esta opción, si está presente, prevalece sobre los valores de :ssl_cert_string y :ssl_cert_object.

  • :objeto de certificado SSL (OpenSSL::X::Certificado)509

    El certificado OpenSSL::X509::Certificate utilizado para identificar la conexión con MongoDB. Solo se puede pasar un certificado mediante esta opción.

  • :ssl_cert_string (Cadena)

    Una cadena que contiene el certificado codificado en PEM utilizado para identificar la conexión con MongoDB. Se puede pasar una cadena de certificados especificando primero el certificado del cliente, seguido de cualquier certificado intermedio hasta el certificado de la CA. La cadena también puede contener la clave privada del certificado, que se ignorará. Esta opción, si está presente, prevalece sobre el valor de :ssl_cert_object.

  • :ssl_key (Cadena)

    El archivo de clave privada que se utiliza para identificar la conexión con MongoDB. Ten en cuenta que, aunque la clave se almacene en el mismo archivo que el certificado, es necesario especificar ambos explícitamente. Esta opción, si está presente, tiene prioridad sobre los valores de :ssl_key_string y :ssl_key_object

  • :ssl_key_object (OpenSSL::PKey)

    La clave privada utilizada para identificar la conexión con MongoDB

  • :frase_de_contraseña_de_clave_ssl (Cadena)

    Una frase de contraseña para la clave privada.

  • :cadena de claves SSL (Cadena)

    Una cadena que contiene la clave privada codificada en PEM utilizada para identificar la conexión con MongoDB. Este parámetro, si está presente, tiene prioridad sobre el valor de la opción :ssl_key_object.

  • :ssl_verify (verdadero,falso)

    Si se debe realizar la validación de certificados de pares y la verificación de nombres de host. Tenga en cuenta que la decisión de validar certificados se invalidará si se configura :ssl_verify_certificate, y la decisión de validar nombres de host se invalidará si se configura :ssl_verify_hostname.

  • :certificado_de_verificación_ssl (verdadero,falso)

    Si se debe realizar la validación del certificado de pares. Esta configuración anula :ssl_verify respecto a si se realiza la validación del certificado.

  • :ssl_verify_hostname (verdadero,falso)

    Si se debe realizar la validación del nombre de host del par. Esta configuración anula :ssl_verify respecto a si se realiza la validación del nombre de host.

  • :tiempo de espera_ms (Entero)

    El tiempo de espera de la operación en milisegundos. Debe ser un entero positivo. Un valor explícito de 0 significa infinito. El valor predeterminado es "unset", lo que significa que la función no está habilitada.

  • :truncar_registros (verdadero,falso)

    Si desea truncar los registros en los caracteres predeterminados 250.

  • :usuario (Cadena)

    El nombre de usuario.

  • :tiempo de espera de la cola de espera (Flotar)

    El tiempo de espera, en segundos, en el grupo de conexiones para que se registre una conexión. Esta opción está obsoleta, utilice :timeout_ms en su lugar.

  • :bibliotecas_de_envoltura (Matriz<Hash>)

    Información sobre bibliotecas como ODM que encapsulan el controlador, que se agregará a

    metadata sent to the server. Specify the lower level libraries first.
    Allowed hash keys: :name, :version, :platform.
    
  • :escribir (Hash)

    Obsoleto. Equivalente a la opción :write_concern.

  • :escribir_preocupación (Hash)

    Las opciones de escritura pueden ser: :w => Entero|Cadena, :wtimeout => Entero (en milisegundos, obsoleto), :j => Booleano, :fsync => Booleano.

  • :nivel de compresión zlib (Entero)

    El nivel de compresión Zlib que se debe usar, si se usa compresión. Consulte el módulo Zlib de Ruby para conocer los niveles válidos.

  • :resolv_opciones (Hash)

    Solo para uso interno del controlador. Opciones para pasar al constructor Resolv::DNS para búsquedas SRV.

  • :opciones de cifrado automático (Hash)

    Opciones relacionadas con el cifrado automático.

    • :key_vault_client => Cliente | nil, un cliente conectado a la instancia de MongoDB que contiene el almacén de claves de cifrado

    • :key_vault_namespace => Cadena, el espacio de nombres del almacén de claves en el formato database.collection

    • :kms_providers => Hash: un hash de la información de configuración del servicio de administración de claves (KMS). Las claves hash válidas son:aws, :azure, :gcp, :kmip y :local. Puede haber más de un proveedor de KMS especificado.

    • :kms_tls_options => Hash: un hash de opciones TLS para autenticarse con proveedores KMS, generalmente usado para servidores KMIP. Las claves hash válidas son:aws, :azure, :gcp, :kmip, :local. Puede haber más de un proveedor KMS especificado.

    • :schema_map => Hash | nil, JSONSchema para una o más colecciones especificando qué campos deben cifrados. Esta opción es mutuamente exclusiva con :schema_map_path.

      • Nota: Los esquemas proporcionados en schema_map solo se aplican a la configuración del cifrado automático del lado del cliente. El controlador no aplicará otras reglas de validación del esquema JSON y generarán un error.

      • Nota: Proporcionar un schema_map ofrece mayor seguridad que depender de esquemas JSON obtenidos del servidor. Protege contra servidores maliciosos que publicitan esquemas JSON falsos, lo que podría engañar al cliente para que envíe datos sin cifrar que deberían estar cifrados.

      • Nota: Si hay una colección presente tanto en :encrypted_fields_map como en :schema_map, se generará un error.

    • :schema_map_path => String | nil Una ruta a un archivo contiene el esquema JSON

    de la colección que almacena documentos con cifrado automático. Esta opción es mutuamente excluyente con :schema_map.

    • :bypass_auto_encryption => Booleano, cuando es verdadero, deshabilita el cifrado automático; el valor predeterminado es falso.

    • :extra_options => Hash | nil, opciones relacionadas con el generación de mongocryptd (esta parte de la API está sujeta a cambios).

    • :encrypted_fields_map => Hash | nil, asigna un namespace de colección a un hash que describe campos cifrados para la queryable encryption.

      • Nota: Si hay una colección presente tanto en encryptedFieldsMap como en schemaMap, se generará un error.

    • :bypass_query_analysis => Boolean | nil, cuando es verdadero deshabilita el análisis automático de los comandos salientes.

    • :crypt_shared_lib_path => [ String | nil ] Ruta que debe usarse para cargar la biblioteca compartida de Crypt. Al usar esta opción, se anulan las rutas de carga predeterminadas de la biblioteca compartida de Crypt para libmongocrypt.

    • :crypt_shared_lib_required => [ Booleano | nulo ] Indica si se requiere la biblioteca compartida crypt. Si es 'true', se generará un error si libmongocrypt no puede cargar una biblioteca crypt_shared.

    Notas sobre el cifrado automático:

    • El cifrado automático es una función exclusiva para empresas que se aplica únicamente a operaciones en una colección.

    • El cifrado automático no es compatible con operaciones en una base de datos o vista.

    • El cifrado automático requiere que el usuario autenticado tenga el privilegio listCollections.

    • En el peor de los casos, el cifrado automático puede triplicar el número de conexiones utilizadas por el Cliente en un momento dado.

    • Si el cifrado automático falla en una operación, utilice un MongoClient configurado con bypass_auto_encryption: true y use ClientEncryption.encrypt para cifrar los valores manualmente.

    • Habilitar el cifrado del lado del cliente reduce el tamaño máximo del lote de escritura y puede tener un impacto negativo en el rendimiento.

Desde:

  • 2.0.0



502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
# Archivo 'lib/mongo/client.rb', línea 502

def inicializar(direcciones_o_uri, opciones = nulo)
  opciones = opciones ? opciones.dup : {}

  procesados = direcciones_de_proceso(direcciones_o_uri, opciones)

  uri = procesados[:uri]
  direcciones = procesados[:direcciones]
  opciones = procesados[:opciones]

  # Si el URI es un URI SRV, anótelo para que podamos comenzar
  # Sondeo SRV si la topología es un clúster fragmentado.
  srv_uri = uri Si uri.is_a?(URI::Protocolo SRV)

  opciones = yo.clase.opciones de canonicalize_ruby(opciones)

  # La versión de la API del servidor se especifica como una cadena.
  # Sin embargo, es muy molesto proporcionar siempre el número 1 como una cadena,
  # por lo tanto, se convierte al tipo de cadena aquí.
  Si API del servidor = opciones[:server_api]
    Si API del servidor.is_a?(Picadillo)
      API del servidor = opciones::Redactado.Nuevo(API del servidor)
      Si (Versión = API del servidor[:versión]).is_a?(entero)
        opciones[:server_api] = API del servidor.unir(versión: Versión.a_s)
      end
    end
  end

  # Manejo especial para sdam_proc ya que solo se utiliza durante el cliente
  # construcción
  sdam_proc = opciones.borrar(:sdam_proc)

  # Para gssapi service_name, la opción predeterminada se proporciona en un hash
  # (un nivel por debajo del nivel superior).
  opciones fusionadas = default_options(opciones)
  opciones.cada hacer |k, v|
    default_v = opciones fusionadas[k]
    Si Picadillo === default_v
      v = default_v.unir(v)
    end
    opciones fusionadas[k] = v
  end
  opciones = opciones fusionadas

  opciones.claves.cada hacer |k|
    Si opciones[k].nil?
      opciones.borrar(k)
    end
  end

  @opciones = ¡validar_nuevas_opciones!(opciones)
=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
  validate_options!(direcciones, is_srv: uri.is_a?(URI::Protocolo SRV))
  validate_authentication_options!

  database_options = @opciones.dup
  database_options.borrar(:server_api)
  @database = Database.Nuevo(yo, @opciones[:database], database_options)

  # Configure temporalmente la monitorización para que las suscripciones a eventos puedan ser
  #configurar sin que haya un clúster
  @monitoring = Monitoring.Nuevo(@opciones)

  Si sdam_proc
    sdam_proc.llamada(yo)
  end

  @connect_lock = Mutex.Nuevo
  @connect_lock.sincronizar hacer
    @cluster = Clúster.Nuevo(direcciones, @monitoring,
      opciones_de_cluster.unir(srv_uri: srv_uri))
  end

  begin
    # Monitoreo no establecido, se sacará del clúster a partir de ahora
    eliminar_variable_de_instancia('@monitoring')

    Si @opciones[:opciones de cifrado automático]
      @connect_lock.sincronizar hacer
        construir_encrypter
      end
    end

  rescate
    begin
      @cluster.cerrar
    rescate => e
      advertencia de registro("Erroral cerrar el clúster en el controlador de excepciones del constructor del cliente: #{e.class}: #{e}")
      # Elimine esta excepción para que se genere la excepción original
    end
    propagar
  end

  Si ¿bloque_dado?
    begin
      rendimiento(yo)
    asegurar
      cerrar
    end
  end
end

Detalles de los atributos de instancia

#clusterMongo::Cluster (solo lectura)

Devuelve el clúster El clúster de servidores para el cliente.

Devuelve:

Desde:

  • 2.0.0



139
140
141
# Archivo 'lib/mongo/client.rb', línea 139

def clúster
  @cluster
end

#databaseMongo::Database (readonly)

Devuelve la base de datos La base de datos en la que está operando el cliente.

Devuelve:

  • (Mongo::Basede datos)

    base de datos La base de datos en la que está operando el cliente.

Desde:

  • 2.0.0



142
143
144
# Archivo 'lib/mongo/client.rb', línea 142

def database
  @database
end

#encriptadorMongo::Crypt::AutoEncrypter (solo lectura)

Devuelve el objeto que encapsula el comportamiento de cifrado automático.

Devuelve:

Desde:

  • 2.0.0



149
150
151
# Archivo 'lib/mongo/client.rb', línea 149

def encriptador
  @encrypter
end

#opcionesHash (solo lectura)

Opciones de retorno Las opciones de configuración.

Devuelve:

  • (Hash)

    opciones Las opciones de configuración.

Desde:

  • 2.0.0



145
146
147
# Archivo 'lib/mongo/client.rb', línea 145

def opciones
  @opciones
end

Detalles del método de clase

.canonicalize_ruby_options(opciones) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Las propiedades del mecanismo de autenticación se escriben en minúsculas, si se proporcionan, en las opciones especificadas, y luego convierten las opciones en una instancia de Options::Redacted.

Desde:

  • 2.0.0



1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
# Archivo 'lib/mongo/client.rb', línea 1162

def opciones de canonicalize_ruby(opciones)
  opciones::Redactado.Nuevo(Picadillo[opciones.map hacer |k, v|
    Si k == :propiedades_mecánicas_de_autenticación || k == 'propiedades_mecánicas_de_autenticación '
      Si v
        v = Picadillo[v.map { |pk, pv| [pk.mayúsculas y minúsculas, pv] }]
      end
    end
    [k, v]
  end])
end

Detalles del método de instancia

#==(otro) ⇒ verdadero, falso También conocido como: eql?

Determinar si este cliente es equivalente a otro objeto.

Ejemplos:

Verificar igualdad de clientes.

client == other

Parámetros:

  • otros (Objeto) -

    El objeto a comparar.

Devuelve:

  • (verdadero,falso)

    Si los objetos son iguales.

Desde:

  • 2.0.0



178
179
180
181
# Archivo 'lib/mongo/client.rb', línea 178

def ==(otros)
  return false a no ser que otros.is_a?(Cliente)
  clúster == otros.clúster && opciones == otros.opciones
end

#[](nombre_de_colección, opciones = {}) ⇒ Mongo::Collection

Obtenga un objeto de colección para el nombre de colección proporcionado.

Ejemplos:

Consigue la colección.

client[:users]

Parámetros:

  • nombre_de_colección (Cadena,Símbolo)

    El nombre de la colección.

  • opciones (Hash) (predeterminado: {})

    Las opciones de la colección.

Devuelve:

Desde:

  • 2.0.0



195
196
197
# Archivo 'lib/mongo/client.rb', línea 195

def [](nombre_de_colección, opciones = {})
  database[nombre_de_colección, opciones]
end

#cerrarverdadero

Cerrar todas las conexiones.

Devuelve:

  • (verdadero) -

    Siempre verdadero.

Desde:

  • 2.1.0



865
866
867
868
869
870
871
# Archivo 'lib/mongo/client.rb', línea 865

def cerrar
  @connect_lock.sincronizar hacer
    @cerrado = true
    cerrar
  end
  true
end

#close_encryptertrue

Cierre el cifrador y limpie los recursos de cifrado automático.

Devuelve:

  • (verdadero) -

    Siempre verdadero.

Desde:

  • 2.0.0



876
877
878
879
880
# Archivo 'lib/mongo/client.rb', línea 876

def cerrar_encriptador
  @encrypter.cerrar Si @encrypter

  true
end

#cerrado?Booleano

Devuelve:

  • (Booleano)

Desde:

  • 2.0.0



856
857
858
# Archivo 'lib/mongo/client.rb', línea 856

def ¿cerrado?
  !!@cerrado
end

#cluster_optionsObjeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
# Archivo 'lib/mongo/client.rb', línea 611

def opciones_de_cluster
  # Compartimos clústeres cuando hay un nuevo cliente con diferentes CRUD_OPTIONS
  Se solicita #; por lo tanto, el clúster no debería recibir ninguno de estos
  # opciones al momento de la creación
  opciones.rechazar hacer |clave, valor|
    OPCIONES CRUD.¿incluir?(clave.a_sym)
  end.unir(
    # pero es necesario volver a poner la base de datos para la autenticación...
    database: opciones[:database],

    # Incluya estas opciones para compatibilidad heredada, pero tenga en cuenta que
    # sus valores en el cliente y el clúster no tienen que coincidir -
    # Las aplicaciones deben leer estos valores desde el cliente, no desde el clúster
    max_reintentos_lectura: opciones[:máximo de reintentos de lectura],
    intervalo de reintento de lectura: opciones[:intervalo de reintento de lectura],
  ).grifo hacer |opciones|
    # Si el cliente ya tiene un clúster, reenvíe srv_uri al nuevo
    # clúster para mantener la monitorización de SRV. Si el cliente es nuevo,
    # su constructor establece srv_uri manualmente.
    Si clúster
      opciones.update(srv_uri: clúster.opciones[:srv_uri])
    end
  end
end

#nombres_de_base_de_datos(filtro = {}, opciones = {}) ⇒ Matriz<String>

Obtener los nombres de todas las bases de datos.

Ejemplos:

Obtener los nombres de las bases de datos.

client.database_names

Parámetros:

  • filtro (Hash) (predeterminado: {})

    Los criterios de filtro para obtener una lista de bases de datos.

  • opta (Hash) (predeterminado: {})

    Las opciones del comando.

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :bases de datos autorizadas (verdadero,falso)

    Una bandera que determina qué bases de datos se devuelven en función de los privilegios del usuario cuando el control de acceso está habilitado

    Consulte mongodb.com/es/docs/manual/reference/command/listDatabases/para obtener más información y uso.

  • :sesión (Sesión)

    La sesión a utilizar.

  • :comment (Objeto)

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

Devuelve:

  • (Matriz<String>)

    Los nombres de las bases de datos.

Desde:

  • 2.0.5



932
933
934
# Archivo 'lib/mongo/client.rb', línea 932

def nombres_de_base_de_datos(filtro = {}, opta = {})
  lista_bases_de_datos(filtro, true, opta).collect{ |información| información['nombre '] }
end

#mapa_de_campos_encriptadosHash | nulo

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el hash del mapa de campo cifrado si se proporciona al crear el cliente.

Devuelve:

  • (Hash | nulo ) —

    Hash del mapa de campo cifrado, o nulo si no está configurado.

Desde:

  • 2.0.0



1178
1179
1180
# Archivo 'lib/mongo/client.rb', línea 1178

def mapa de campos cifrados
  @mapa_de_campos_encriptados ||= @opciones.Fetch(:opciones de cifrado automático, {})[:mapa de campos cifrados]
end

#get_session(options = {}) ⇒ Session | nil

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve una sesión para utilizar en operaciones si es posible.

Si la opción :session está activada, se valida la sesión y se devuelve. De lo contrario, si la implementación admite sesiones, se crea una nueva sesión y se devuelve. Al crear una nueva sesión, esta será implícita (el controlador gestiona su ciclo de vida) si se especifica la opción :implicit; de lo contrario, será explícita (la aplicación gestiona su ciclo de vida). Si la implementación no admite sesiones, se devuelve nulo.

Parámetros:

  • opciones (Hash) (predeterminado: {})

    un conjunto personalizable de opciones

Opciones Hash(opciones):

  • :implicit (true | false)

    Cuando no se pasa ninguna sesión, ¿se debe crear una sesión implícita?

  • :sesión (Sesión)

    La sesión para validar y devolver.

Devuelve:

  • (Session | nil)

    Objeto de sesión o nil si la implementación no admite sesiones.

Desde:

  • 2.0.0



1118
1119
1120
1121
1122
# Archivo 'lib/mongo/client.rb', línea 1118

def obtener_sesión(opciones = {})
  get_session!(opciones)
rescate Error::SessionsNotSupported
  nulo
end

#hashEntero

Obtén el valor hash del cliente.

Ejemplos:

Obtenga el valor hash del cliente.

client.hash

Devuelve:

  • (Entero)

    El valor hash del cliente.

Desde:

  • 2.0.0



207
208
209
# Archivo 'lib/mongo/client.rb', línea 207

def hash
  [clúster, opciones].hash
end

#inspeccionarCadena

Obtenga una inspección del cliente como una cadena.

Ejemplos:

Inspeccionar al cliente.

client.inspect

Devuelve:

  • (Cadena) -

    La cadena de inspección.

Desde:

  • 2.0.0



674
675
676
# Archivo 'lib/mongo/client.rb', línea 674

def inspeccionar
  "#<Mongo::Client:0x#{object_id} cluster=#{cluster. summary}>"
end

#lista_bases_de_datos(filtro = {}, solo_nombre = falso, opciones = {}) ⇒ Array<Hash>

Obtener información de cada base de datos.

See https://mongodb.com/es/docs/manual/reference/command/listDatabases/
for more information and usage.

Ejemplos:

Obtén la información de cada base de datos.

client.list_databases

Parámetros:

  • filtro (Hash) (predeterminado: {})

    Los criterios de filtro para obtener una lista de bases de datos.

  • name_only (verdadero,falso) (predeterminado: falso)

    Si solo se devolverá el nombre de cada base de datos sin metadatos completos.

  • opta (Hash) (predeterminado: {})

    Las opciones del comando.

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :bases de datos autorizadas (verdadero,falso)

    Una bandera que determina qué bases de datos se devuelven en función de los privilegios del usuario cuando el control de acceso está habilitado.

  • :comment (Objeto)

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

  • :sesión (Sesión)

    La sesión a utilizar.

Devuelve:

  • (Matriz<Hash>)

    La información de cada base de datos.

Desde:

  • 2.0.5



963
964
965
966
967
968
969
# Archivo 'lib/mongo/client.rb', línea 963

def lista_bases_de_datos(filtro = {}, name_only = false, opta = {})
  cmd = { listDatabases: 1 }
  cmd[:solonombre] = !!name_only
  cmd[:filtrar] = filtro a no ser que filtro.¿vacío?
  cmd[:Bases de datos autorizadas] = true Si opta[:bases de datos autorizadas]
  uso(Database::ADMINISTRACIÓN).database.comando_de_lectura(cmd, opta).primera[Database::BASES DE DATOS]
end

#list_mongo_databases(filter = {}, opts = {}) ⇒ Array<Mongo::Database>

Devuelve una lista de objetos Mongo::Database.

Ejemplos:

Obtenga una lista de objetos Mongo::Database.

client.list_mongo_databases

Parámetros:

  • filtro (Hash) (predeterminado: {})

    Los criterios de filtro para obtener una lista de bases de datos.

  • opta (Hash) (predeterminado: {})

    Las opciones del comando.

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :sesión (Sesión)

    La sesión a utilizar.

Devuelve:

  • (Matriz)

    La lista de objetos de la base de datos.

Desde:

  • 2.5.0



986
987
988
989
990
# Archivo 'lib/mongo/client.rb', línea 986

def lista_bases_de_datos_mongo(filtro = {}, opta = {})
  nombres_de_base_de_datos(filtro, opta).collect hacer |Nombre|
    Database.Nuevo(yo, Nombre, opciones)
  end
end

#max_read_retriesEntero

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obten el número máximo de veces que el cliente puede reintentar una operación de lectura al utilizar reintentos de lectura heredados.

Devuelve:

  • (Entero)

    La cantidad máxima de reintentos.

Desde:

  • 2.0.0



642
643
644
# Archivo 'lib/mongo/client.rb', línea 642

def max_read_retries
  opciones[:máximo de reintentos de lectura] || Clúster::MÁXIMO DE REINTENTOS DE LECTURA
end

#max_write_retriesEntero

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtenga la cantidad máxima de veces que el cliente puede reintentar una operación de escritura cuando utiliza reintentos de escritura heredados.

Devuelve:

  • (Entero)

    La cantidad máxima de reintentos.

Desde:

  • 2.0.0



662
663
664
# Archivo 'lib/mongo/client.rb', línea 662

def máximo de reintentos de escritura
  opciones[:máximo de reintentos de escritura] || Clúster::MÁXIMO DE REINTENTOS DE ESCRITURA
end

#leer_preocupaciónHash

Obtenga la información de lectura preocupante para este cliente.

Ejemplos:

Haz que el cliente lea la preocupación.

client.read_concern

Devuelve:

  • (Hash)

    La preocupación de la lectura.

Desde:

  • 2.6.0



839
840
841
# Archivo 'lib/mongo/client.rb', línea 839

def leer_preocupación
  opciones[:read_concern]
end

#read_preferenceBSON::Document

Obtenga la preferencia de lectura de las opciones pasadas al cliente.

Ejemplos:

Obtenga la preferencia de lectura.

client.read_preference

Devuelve:

  • (BSON::Documento)

    La preferencia de lectura definida por el usuario. El documento puede tener los siguientes campos:

    • :mode – preferencia de lectura especificada como un símbolo; los valores válidos son:primary,:primary_preferred,:secondary,:secondary_preferred y:nearest.

    • :tag_sets – una matriz de hashes.

    • :local_threshold.

Desde:

  • 2.0.0



722
723
724
# Archivo 'lib/mongo/client.rb', línea 722

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

#intervalo_de_reintentar_lecturaFlotante

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtenga el intervalo, en segundos, en el que se reintenta la lectura al utilizar reintentos de lectura heredados.

Devuelve:

  • (Flotar) -

    El intervalo.

Desde:

  • 2.0.0



652
653
654
# Archivo 'lib/mongo/client.rb', línea 652

def intervalo de reintento de lectura
  opciones[:intervalo de reintento de lectura] || Clúster::INTERVALO DE REINTENTO DE LECTURA
end

#reconectarverdadero

Vuelva a conectar el cliente.

Ejemplos:

Vuelva a conectar el cliente.

client.reconnect

Devuelve:

  • (verdadero) -

    Siempre verdadero.

Desde:

  • 2.1.0



890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
# Archivo 'lib/mongo/client.rb', línea 890

def reconectar
  direcciones = clúster.direcciones.map(Y:a_s)

  @connect_lock.sincronizar hacer
    cerrar rescate nulo

    @cluster = Clúster.Nuevo(direcciones, vigilancia, opciones_de_cluster)

    Si @opciones[:opciones de cifrado automático]
      construir_encrypter
    end

    @cerrado = false
  end

  true
end

#selector_de_servidorMongo::ServerSelector

Obtenga el selector de servidor. Utiliza la preferencia de lectura definida en las opciones del cliente o, de forma predeterminada, un selector de servidor principal.

Ejemplos:

Obtenga el selector de servidor.

client.server_selector

Devuelve:

  • (Mongo::ServerSelector)

    El selector de servidor que utiliza la preferencia de lectura definida por el usuario o un selector de servidor principal predeterminado.

Desde:

  • 2.5.0



700
701
702
703
704
705
706
# Archivo 'lib/mongo/client.rb', línea 700

def selector de servidor
  @selector_de_servidor ||= Si read_preference
    Selector de servidor.Obtener(read_preference)
  else
    Selector de servidor.primario
  end
end

#start_session(options = {}) ⇒ Sesión

Nota:

Una sesión no puede ser utilizada por varios subprocesos a la vez; los objetos de sesión no son seguros para subprocesos.

Iniciar una sesión.

Si la implementación no admite sesiones, se genera Mongo::Error::InvalidSession. Esta excepción también puede generarse cuando el controlador no está conectado a un servidor que contiene datos, por ejemplo, durante una conmutación por error.

Ejemplos:

Iniciar una sesión.

client.start_session(causal_consistency: true)

Parámetros:

  • opciones (Hash) (predeterminado: {})

    Opciones de sesión. Acepta las opciones que acepta Session#initialize.

Devuelve:

Desde:

  • 2.5.0



1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
# Archivo 'lib/mongo/client.rb', línea 1011

def inicio_sesión(opciones = {})
  sesión = get_session!(opciones.unir(implicit: false))
  Si ¿bloque_dado?
    begin
      rendimiento sesión
    asegurar
      sesión.fin_sesión
    end
  else
    sesión
  end
end

#resumenCadena

Nota:

El formato y el diseño exactos de la cadena de resumen devuelta no son parte de la API pública del controlador y pueden cambiarse en cualquier momento.

Obtenga un resumen del estado del cliente.

Devuelve:

  • (Cadena) -

    La cadena de resumen.

Desde:

  • 2.7.0



686
687
688
# Archivo 'lib/mongo/client.rb', línea 686

def resumen
  "#<Client cluster=#{cluster. summary}>"
end

#timeout_msInteger | nil

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el valor de la opción timeout_ms si está configurada.

Devuelve:

  • (Integer | nil)

    Valor de la opción timeout_ms si está configurada.

Desde:

  • 2.0.0



1184
1185
1186
# Archivo 'lib/mongo/client.rb', línea 1184

def tiempo de espera_ms
  @opciones[:tiempo de espera_ms]
end

#timeout_secFloat | nil

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el valor de la opción timeout_ms convertido a segundos.

Devuelve:

  • (Float | nil)

    Valor de la opción timeout_ms convertido a segundos.

Desde:

  • 2.0.0



1190
1191
1192
1193
1194
1195
1196
# Archivo 'lib/mongo/client.rb', línea 1190

def tiempo de espera_seg
  Si tiempo de espera_ms.nil?
    nulo
  else
    tiempo de espera_ms / 1_000.0
  end
end

#update_options(new_options) ⇒ Hash

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Actualiza las opciones de este cliente desde new_options, validando todas las opciones.

Las nuevas opciones pueden transformarse según diversas reglas. Se devuelve el hash final de las opciones aplicadas al cliente.

Si las opciones no superan la validación, este método puede advertir o generar una excepción. Si este método genera una excepción, el cliente debe descartarse (de forma similar a si un constructor generara una excepción).

Parámetros:

  • nuevas_opciones (Hash)

    Las nuevas opciones a utilizar.

Devuelve:

  • (Hash)

    Se modificaron nuevas opciones escritas en el cliente.

Desde:

  • 2.0.0



789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
# Archivo 'lib/mongo/client.rb', línea 789

def update_options(nuevas_opciones)
  old_options = @opciones

  nuevas_opciones = yo.clase.opciones de canonicalize_ruby(nuevas_opciones || {})

  ¡validar_nuevas_opciones!(nuevas_opciones).grifo hacer |opta|
    #Nuestras opciones están congeladas
    opciones = @opciones.dup
    Si opciones[:escribir] && opta[:escribir_preocupación]
      opciones.borrar(:escribir)
    end
    Si opciones[:escribir_preocupación] && opta[:escribir]
      opciones.borrar(:escribir_preocupación)
    end

    opciones.update(opta)
    @opciones = opciones.freeze

    opciones de cifrado automático cambiadas =
      @opciones[:opciones de cifrado automático] != old_options[:opciones de cifrado automático]

    # Si hay nuevas auto_encryption_options, cree un nuevo cifrador.
    # De lo contrario, permita que el nuevo cliente comparta un cifrador con el
    # cliente original.
    #
    # Si auto_encryption_options son nulos, establezca @encrypter en nulo, pero no
    # cierra el encriptador porque aún puede ser usado por el cliente original.
    Si @opciones[:opciones de cifrado automático] && opciones de cifrado automático cambiadas
      @connect_lock.sincronizar hacer
        construir_encrypter
      end
    elsif @opciones[:opciones de cifrado automático].nil?
      @connect_lock.sincronizar hacer
        @encrypter = nulo
      end
    end

    validate_options!
    validate_authentication_options!
  end
end

#use(nombre) ⇒ Mongo::Client

Nota:

El nuevo cliente comparte el clúster con el cliente original y, como resultado, también comparte la instancia de monitoreo y los suscriptores de eventos de monitoreo.

Crea un nuevo cliente configurado para utilizar la base de datos con el nombre proporcionado y utilizando las otras opciones configuradas en este cliente.

Ejemplos:

Cree un cliente para la base de datos 'usuarios'.

client.use(:users)

Parámetros:

  • Nombre (Cadena,Símbolo)

    El nombre de la base de datos a utilizar.

Devuelve:

  • (Mongo::Cliente)

    Una nueva instancia de cliente.

Desde:

  • 2.0.0



741
742
743
# Archivo 'lib/mongo/client.rb', línea 741

def uso(Nombre)
  con(database: Nombre)
end

#watch(tubería = [], opciones = {}) ⇒ ChangeStream

Nota:

Un flujo de cambios solo permite el nivel de consistencia de lectura de 'mayoría'.

Nota:

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

A partir de la versión 3.6 del servidor MongoDB, el marco de agregación admite la etapa de canalización "$changeStream". A partir de la versión 4.0, esta etapa permite a los usuarios solicitar el envío de notificaciones para todos los cambios que se produzcan en el clúster del cliente.

Ejemplos:

Recibir notificaciones de cambios para el clúster del cliente.

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

Parámetros:

  • pipeline (Matriz<Hash>) (predeterminado: [])

    Operadores de filtro adicionales opcionales.

  • opciones (Hash) (predeterminado: {})

    Las opciones del flujo de cambios.

Opciones Hash(opciones):

  • :documento_completo (Cadena)

    Valores permitidos: nulo, 'predeterminado', 'updateLookup', 'whenAvailable', 'obligatorio'.

    El valor predeterminado es no enviar ningún valor (es decir, nulo), lo que equivale a "predeterminado". Por defecto, la notificación de cambios para actualizaciones parciales incluirá un delta que describe los cambios en el documento.

    Cuando se configura en 'updateLookup', la notificación de cambio para actualizaciones parciales incluirá tanto un delta que describe los cambios en el documento como una copia del documento completo que se modificó algún tiempo después de que ocurrió el cambio.

    Cuando se establece en 'whenAvailable', configura el flujo de cambios para devolver la imagen posterior del documento modificado para eventos de reemplazo y actualización si la imagen posterior para este evento está disponible.

    Cuando se establece en 'obligatorio', el mismo comportamiento que 'whenAvailable' excepto que se genera un error si la imagen posterior no está disponible.

  • :documento completo antes del cambio (Cadena)

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

    El valor predeterminado es no enviar un valor (es decir, nulo), lo que equivale a "desactivado".

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

    Cuando se establece en 'obligatorio', el mismo comportamiento que 'whenAvailable' excepto que se genera un error si la imagen previa no está disponible.

  • :resume_after (BSON::Documento, Hash)

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

  • :tiempo máximo de espera ms (Entero)

    La cantidad máxima de tiempo que el servidor debe esperar nuevos documentos para satisfacer una consulta de flujo de cambios.

  • :tamaño_del_lote (Entero)

    El número de documentos a devolver por agrupar.

  • :colación (BSON::Documento, Hash)

    La intercalación a utilizar.

  • :sesión (Sesión)

    La sesión a utilizar.

  • :start_at_operation_time (BSON::Marca de tiempo)

    Solo se devuelven los cambios ocurridos en la fecha y hora especificadas o después. Cualquier comando ejecutado en el servidor devolverá una hora de clúster que se puede usar aquí. Solo se reconoce en las versiones de servidor 4.0y posteriores.

  • :comment (Objeto)

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

  • :mostrar eventos expandidos (Booleano)

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

Devuelve:

  • (Transmisiónde cambios)

    El objeto de flujo de cambio.

Desde:

  • 2.6.0



1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
# Archivo 'lib/mongo/client.rb', línea 1088

def reloj(pipeline = [], opciones = {})
  return uso(Database::ADMINISTRACIÓN).reloj(pipeline, opciones) a no ser que database.Nombre == Database::ADMINISTRACIÓN

  view_options = opciones.dup
  view_options[:tipo_de_cursor] = :tailable_await Si opciones[:tiempo máximo de espera ms]

  Mongo::Colección::vista::ChangeStream.Nuevo(
    Mongo::Colección::vista.Nuevo(yo["#{Basede datos::COMANDO}.aggregate"], {}, view_options),
    pipeline,
    Mongo::Colección::vista::ChangeStream::GRUPO,
    opciones)
end

#con(nuevas_opciones = nulo) ⇒ Mongo::Cliente

Nota:

Según las opciones proporcionadas, el cliente devuelto puede compartir el clúster con el cliente original o crearse con un nuevo clúster. Si se crea un nuevo clúster, los suscriptores de eventos de monitorización del nuevo cliente se configuran con el conjunto predeterminado de suscriptores de eventos y no se copia ninguno de los suscriptores del cliente original.

Crea un nuevo cliente con las opciones pasadas fusionadas con las opciones existentes de este cliente. Útil para modificar opciones específicas en casos puntuales sin modificar el cliente original.

Ejemplos:

Consiga un cliente con opciones modificadas.

client.with(:read => { :mode => :primary_preferred })

Parámetros:

  • nuevas_opciones (Hash) (predeterminado: nulo)

    Las nuevas opciones a utilizar.

Devuelve:

  • (Mongo::Cliente)

    Una nueva instancia de cliente.

Desde:

  • 2.0.0



763
764
765
766
767
768
769
770
771
772
773
# Archivo 'lib/mongo/client.rb', línea 763

def con(nuevas_opciones = nulo)
  clon.grifo hacer |Cliente|
    opta = Cliente.update_options(nuevas_opciones || opciones::Redactado.Nuevo)
    Database.Cree(Cliente)
    # No podemos usar el mismo cluster si hay algunas opciones que lo afecten
    # han cambiado.
    Si ¿modificando el clúster?(opta)
      Clúster.Cree(Cliente, escucha: opta[:escucha])
    end
  end
end

#with_session(opciones = {}, &block) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Crea una sesión para usar en operaciones si es posible y la entrega al bloque proporcionado.

Si la opción :session está activada, se valida la sesión y se usa. De lo contrario, si la implementación admite sesiones, se crea una nueva sesión y se usa. Al crear una nueva sesión, esta será implícita (el controlador gestiona su ciclo de vida) si se especifica la opción :implicit; de lo contrario, será explícita (la aplicación gestiona su ciclo de vida). Si la implementación no admite sesiones, se devuelve "nil" al bloque.

Cuando finaliza el bloque, si la sesión se creó y era implícita, o si se pasó una sesión implícita, se finaliza la sesión, lo que la devuelve al grupo de sesiones disponibles.

Parámetros:

  • opciones (Hash) (predeterminado: {})

    un conjunto personalizable de opciones

Opciones Hash(opciones):

  • :implicit (true | false)

    Cuando no se pasa ninguna sesión, ¿se debe crear una sesión implícita?

  • :sesión (Sesión)

    La sesión para validar y devolver.

Desde:

  • 2.0.0



1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
# Archivo 'lib/mongo/client.rb', línea 1144

def con_sesión(opciones = {}, Ybloque)
  # TODO: Agregar esto nuevamente en RUBY-3174.
  # assert_not_closed

  sesión = obtener_sesión(opciones)

  rendimiento sesión
asegurar
  Si sesión && sesión.implicit?
    sesión.fin_sesión
  end
end

#escribir_preocupaciónMongo::WriteConcern

Obtener la solicitud de escritura para este cliente. Si no se proporcionó ninguna opción, se utilizará una confirmación de servidor única predeterminada.

Ejemplos:

Consiga que el cliente escriba su preocupación.

client.write_concern

Devuelve:

Desde:

  • 2.0.0



852
853
854
# Archivo 'lib/mongo/client.rb', línea 852

def escribir_preocupación
  @write_concern ||= Escribir preocupación.Obtener(opciones[:escribir_preocupación] || opciones[:escribir])
end