Clase: Mongo::Client

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 driver y es el objeto principal con el que se interactuará.

Desde:

  • 2.0.0

Resumen de constantes colapsar

CRUD_OPCIONES =

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,
  guardar, conformidad_de_lectura,
  :retry_reads, :max_read_retries, intervalo_de_nueva_lectura,
  retry_writes, :max_write_retries,
  max_intentos_adaptativos, :enable_overload_retargeting,
  :timeout_ms,

  # Opciones que actualmente no pueden estar aquí:
  #
  # :tiempo_espera_selección_servidor
  # El tiempo de espera de la selección del servidor es utilizado por el constructor de clústeres para determinar
  # cuánto tiempo esperar para la exploración inicial en modo de compatibilidad, pero una vez
  # el clúster es inicializado, ya no utiliza este tiempo de espera.
  # Desafortunadamente, el selector de servidores lee el tiempo de espera de selección de servidor fuera de
  # el clúster, y este comportamiento es necesario para Cluster#next_primary
  # que no acepta argumentos. Cuando next_primary se elimine, podemos revisarlo
  # uso del mismo objeto de clúster con diferentes tiempos de espera para la selección de servidores.
].freeze
VALID_OPTIONS =

Opciones válidas del cliente.

Desde:

  • 2.1.2

%i[
  app_name
  auth_mech
  auth_mech_properties
  auth_source
  auto_encryption_options
  bg_error_backtrace
  Optimización
  compresores
  conexión_directa
  enable_overload_retargeting
  Conectar
  conectar_timeout
  database
  frecuencia del latido del corazón
  id_generator
  equilibrio de carga
  umbral_local
  logger
  log_prefix
  max_adaptive_retries
  max_connecting
  tiempo_máximo_inactivo
  max_pool_size
  max_read_retries
  max_write_retries
  min_pool_size
  Monitoring
  monitoring_io
  Contraseña
  Plataforma
  populator_io
  Lea
  read_concern
  read_retry_interval
  replica_set
  resolv_options
  retry_reads
  reintentar_escrituras
  escáner
  sdam_proc
  server_api
  server_monitoring_mode
  server_selection_timeout
  socket_timeout
  srv_max_hosts
  srv_service_name
  ssl
  ssl_ca_cert
  ssl_ca_cert_object
  ssl_ca_cert_string
  ssl_cert
  ssl_cert_object
  ssl_cert_string
  ssl_key
  ssl_key_object
  ssl_key_pass_phrase
  ssl_key_string
  ssl_verify
  ssl_verify_certificate
  ssl_verify_hostname
  ssl_verify_ocsp_endpoint
  timeout_ms
  trazado
  truncate_logs
  usuario
  wait_queue_timeout
  wrapping_libraries
  guardar
  write_concern
  zlib_compression_level
].freeze
VALID_COMPRESSORS =

Los algoritmos de compresión compatibles con el driver.

Desde:

  • 2.5.0

[
  mongo::protocolo::Comprimido::zstd,
  mongo::protocolo::Comprimido::rápido,
  mongo::protocolo::Comprimido::zlib
].freeze
VERSIONES_API_SERVIDOR_VÁLIDAS =

Las versiones conocidas de API del servidor.

Desde:

  • 2.0.0

%w[
  1
].freeze

Constantes incluidas desde Loggable

Loggable::PREFIX

Resumen de atributos de la instancia colapsar

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Métodos incluidos desde Registrable

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

Detalles del Constructor

#inicializar(direcciones_o_uri, opciones = nil) ⇒ Cliente

Instancia un nuevo cliente de driver.

Ejemplos:

Instanciar un único servidor o cliente mongos.

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

Instanciar un cliente para un set de réplicas.

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

Conéctese directamente a un mongod en un set 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 (arreglo<String> | String)

    El arreglo de direcciones de servidores en la forma de host:puerto o una cadena de conexión URI de MongoDB.

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

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

Opciones Hash (options):

  • :app_name (String, Símbolo)

    Nombre de la aplicación que se imprime en los registros de mongod al establecer una conexión

  • auth_mech (Símbolo)

    El mecanismo de autenticación que se debe utilizar. Uno de :mongodb_cr, :mongodb_x509, :plain, :scram, :scram256

  • propiedades_mecánica_autenticación (encriptada)
  • origen_de_autenticación (string)

    La fuente desde la cual autenticar.

  • :bg_error_backtrace (true | false | nil | Integer)

    Experimental. Establézcalo en verdadero para registro rastreos completos de errores en hilos en segundo plano. Se debe configurar en false o nil para no registrar neumáticos. Proporcione un número entero positivo para registrar hasta esa cantidad de líneas de rastreo inverso.

  • compresores (arreglo<String>)

    Una lista de posibles compresores a utilizar, en orden de preferencia. El driver elige el primer compresor que también es compatible con el servidor. Actualmente, el controlador sólo es compatible con 'zstd', 'snappy' y 'zlib'.

  • conexión_directa (true | false)

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

  • Conectar (Símbolo)

    Obsoleto: utiliza la opción :direct_connection en lugar de esta opción. El método de conexión a utilizar. Esto fuerza al clúster a comportarse de la manera especificada en lugar de descubrirse automáticamente. Uno de :direct, :replica_set, :particionado, :load_balanced. Si :connect está configurado de :load_balanced, el controlador se comportará como si el servidor fuera un balanceador de carga, incluso si no está conectado a un balanceador de carga.

  • timeout_conexión (Flotante)

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

  • :database (string)

    La base de datos a la que conectar.

  • frecuency_de_los_latidos (Flotante)

    El intervalo, en segundos, para que el monitor del servidor refresque su descripción a través de hello.

  • generador_de_id (objeto)

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

  • :balanceo de carga (true | false)

    Si se espera conectar a un balanceador de carga.

  • :local_threshold (Integer)

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

  • :logger (Logger)

    Un registrador personalizado para usar.

  • log_prefix (string)

    Un prefijo de registro personalizado para usar al registrar. Esta opción es experimental y está sujeta a cambios en una versión futura del driver.

  • conexiones máximas (Integer)

    El número máximo de conexiones que pueden estar estableciéndose simultáneamente. El por defecto es 2. Esta opción debe aumentarse si hay muchos hilos que comparten el mismo cliente y la aplicación experimenta expiraciones al esperar que se establezcan conexiones. seleccionar un servidor para una operación. El valor por defecto es 2.

  • :max_idle_time (Integer)

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

  • :max_pool_size (Integer)

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

  • :max_read_retries (Integer)

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

  • :max_write_retries (Integer)

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

  • min_pool_size (Integer)

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

  • supervisión (verdadero, falso)

    Si se proporciona false, el cliente se inicializa sin suscriptores de eventos SDAM globales y no publicará eventos SDAM. La supervisión de comandos y los eventos heredados aún se publicarán, y el driver seguirá realizando el SDAM y supervisando su clúster para llevar a cabo la selección del servidor. El registro de eventos SDAM integrado en el controlador se desactivará porque se implementa a través de la suscripción a eventos SDAM. Client#subscribe tendrá éxito para todos los tipos de eventos, pero los suscriptores de eventos SDAM no serán invocados. Los valores diferentes de false resultan en un comportamiento por defecto, que consiste en realizar 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 driver. Configúrelo en falso para evitar que se envíe el comando endSessions al servidor para limpiar las sesiones del servidor cuando el clúster esté desconectado, y para no iniciar el ejecutor periódico. Si :monitoring_io es falso, :cleanup también se establece por defecto en falso.

  • :contraseña (string)

    La contraseña del usuario.

  • Plataforma (string)

    Información de la plataforma que se incluirá en los metadatos impresos en los registros de mongod al establecer una conexión

  • :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)

    La opción de nivel de consistencia de lectura.

  • intervalo_de_nueva_lectura (Flotante)

    El intervalo, en segundos, en el que se reintentan las lecturas en un mongos.

  • Conjunto de réplicas (Símbolo)

    El nombre del set de réplicas al que se desea conectar. Se ignorarán los servidores que no estén en este set de réplicas.

  • :retry_reads (true | false)

    Si es verdadero, las lecturas reintentables modernas están habilitadas (que lo es por defecto). Si es falso, las lecturas repetibles modernas están desactivadas y las lecturas repetibles heredadas están habilitadas.

  • retry_writes (true | false)

    Reintenta las escrituras una vez cuando esté conectado a un set de réplicas o a un clúster. (El valor por defecto es verdadero).

  • :escanear (true | false)

    Si se desea escanear todas las semillas en el constructor. El valor por defecto en la versión 2.x del driver es hacerlo; la versión 3.x del driver no escaneará semillas en el constructor. Opta por el nuevo comportamiento configurando esta opción en 'falso'. Nota: establecer esta opción en nil permite escanear semillas en el constructor en la versión 2.x del driver. La versión 3.x del driver reconocerá esta opción, pero la ignorará y nunca escaneará semillas en el constructor.

  • :sdam_proc (Proc)

    Un Proc para invocar con el cliente como argumento antes de realizar el descubrimiento y supervisión del servidor. Utilícelo para configurar los listeners de eventos SDAM y recibir 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 únicamente a invocar los métodos #suscribirse y #desuscribirse en el cliente.

  • API del servidor (encriptada)

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

    • :version -- string
    • :estricto -- booleano
    • :deprecation_errors -- booleano
  • :server_selection_timeout (Integer)

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

  • timeout_del_socket (Flotante)

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

  • máximo_srv_hosts (Integer)

    El número máximo de mongoses con los que se comunicará el driver para topologías fragmentadas. Si esta opción está 0, entonces no habrá ningún número máximo de mongos. Si el URI proporcionado se resuelve en más hosts que :srv_max_hosts, el cliente elegirá aleatoriamente un subconjunto de hosts de tamaño :srv_max_hosts. Si srvMaxHosts se proporciona en las opciones de URI, tiene prioridad sobre esta opción.

  • srv_nombre_del_servicio (string)

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

  • :ssl (verdadero, falso)

    Si se debe usar TLS.

  • archivo CA de seguridad SSL (string)

    El archivo que contiene los certificados de autoridad de certificación concatenados utilizados para validar los certificados recibidos del otro extremo de la conexión. Los certificados intermedios NO deben especificarse en los archivos referenciados por esta opción. Se requiere uno de :ssl_ca_cert, :ssl_ca_cert_string o :ssl_ca_cert_object (en orden prioritario) al utilizar :ssl_verify.

  • Objeto ssl_ca_cert (Array<OpenSSL::X509::Certificate>)

    Un arreglo de objetos OpenSSL::X509::Certificate que representa los certificados de autoridad de certificación utilizados para validar los certificados proporcionados desde el otro extremo de la conexión. Los certificados intermedios NO deben especificarse en los archivos referenciados por esta opción. Uno de :ssl_ca_cert, :ssl_ca_cert_string o :ssl_ca_cert_object (en orden de prioridad) es obligatorio al utilizar :ssl_verify.

  • :ssl_ca_cert_string (string)

    Una string que contiene un certificado de autoridad de certificación utilizada para validar información que se pasa desde el otro extremo de la conexión. Esta opción permite pasar solo un certificado CA al controlador. Los certificados intermedios NO deben especificarse en los archivos a los que hace referencia esta opción. Se requiere uno de :ssl_ca_cert, :ssl_ca_cert_string o :ssl_ca_cert_object (en orden de prioridad) cuando se utiliza :ssl_verify.

  • certificado SSL (string)

    El archivo de certificado utilizado para identificar la conexión contra MongoDB. Se puede pasar una cadena de certificados especificando primero el certificado de cliente, seguido de cualquier certificado intermedio hasta el certificado de CA. El archivo también puede contener la llave privada del certificado, la cual será ignorada. Esta opción, de estar presente, tiene prioridad sobre los valores de :ssl_cert_string y :ssl_cert_object

  • Certificado SSL (OpenSSL::X509::Certificate)

    El OpenSSL::X509::Certificate utilizado para identificar la conexión contra MongoDB. Solo se puede pasar un certificado a través de esta opción.

  • :ssl_cert_string (string)

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

  • :ssl_key (string)

    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_paso_de_clave_ssl (string)

    Una frase secreta para la llave privada.

  • Cadena de clave SSL (string)

    Una string que contiene la llave privada codificada PEM que se utiliza 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

  • Verificación SSL (verdadero, falso)

    Si se debe realizar la validación del certificado de par y la verificación del nombre de host. Tenga en cuenta que la decisión de validar los certificados se anulará si :ssl_verify_certificate está configurado, y la decisión de validar los nombres de host se anulará si :ssl_verify_hostname está configurado.

  • ssl_verificar_certificado (verdadero, falso)

    Si se realiza la validación del certificado de par. Esta configuración anula :ssl_verify con 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 de igual a igual. Esta configuración anula :ssl_verify en lo que respecta a si se realiza la validación del nombre de host.

  • :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 predeterminado no está establecido, lo que significa que la funcionalidad no está activada.

  • truncate_logs (verdadero, falso)

    Si truncar los registros en los 250 caracteres por defecto.

  • Usuario/a (string)

    El nombre de usuario.

  • Tiempo de espera de la cola (Flotante)

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

  • wrapping_libraries (arreglo<Hash>)

    Información sobre librerías, como ODMs, que envuelven el driver, para ser añadida a los metadatos enviados al servidor. Especifica primero las librerías de nivel inferior. Claves hash permitidas: :name, :version, :platform.

  • 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, :wtimeout=>Integer (en milisegundos, desaprobado), :j=>booleano, :fsync=>booleano.

  • zlib_compression_level (Integer)

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

  • resolv_options (encriptada)

    Para uso interno de conductores solamente. Opciones para pasar al constructor de Resolv::DNS para búsquedas SRV.

  • trazando (encriptada)

    Opciones de rastreo de OpenTelemetry.

    • ":enabled => Booleano, indica si se debe habilitar el seguimiento OpenTelemetry. " El valor por defecto es nil, lo que significa que la configuración se tomará de la variable de entorno OTEL_RUBY_INSTRUMENTATION_MONGODB_ENABLED.
    • :tracer => OpenTelemetry::Trace::Tracer, el rastreador a utilizar para el rastreo. Debe ser una implementación de la interfaz OpenTelemetry::Trace::Tracer.
    • :query_text_max_length => Integer, la longitud máxima del query text que se incluirá en los atributos de span. Si el texto de la query supera esta longitud, se truncará. El valor 0 significa que no se incluirá ningún texto de query en los atributos del span. El valor por defecto es nil, lo que significa que la configuración se tomará de la variable de entorno OTEL_RUBY_INSTRUMENTATION_MONGODB_QUERY_TEXT_MAX_LENGTH.
  • opciones de cifrado automático (encriptada)

    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 llaves de cifrado
    • `:key_vault_namespace` => String, el namespace del almacén de claves en el formato base de datos.colección
    • kms_providers => Hash, Un hash de información de configuración de Key Management Service (KMS). Las claves hash válidas son: :aws, :azure, :gcp, :kmip, :local. Puede haber más de un proveedor de kms especificado.
    • :kms_tls_options => Hash, Un hash de opciones TLS para autenticar a los proveedores de KMS, generalmente utilizado para servidores KMIP. Las claves hash válidas son: :aws, :azure, :gcp, :kmip, :local. Puede haber más de un proveedor de 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 el schema_map solo se aplican a la configuración de cifrado automático para el cifrado del lado del cliente. El driver no aplicará otras reglas de validación en el JSON schema, lo que resultará en un error.
      • Nota: proporcionar un schema_map ofrece más seguridad que confiar en los Esquemas JSON obtenidos del servidor. Protege contra un servidor malicioso que anuncie un falso JSON Schema, lo que podría engañar al cliente para que envíe datos no cifrados que deberían cifrarse.
      • Nota: Si una colección está presente tanto en :encrypted_fields_map como en :schema_map, se producirá un error.
    • :schema_map_path => String | nil Un path a el archivo que contiene el esquema JSON de la colección que almacena documentos cifrados. Esta opción es mutuamente excluyente con :schema_map.
    • :bypass_auto_encryption => Booleano, si es verdadero, deshabilita el cifrado automático; por defecto es falso.
    • :extra_options => Hash | nulo, opciones relacionadas con la creació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 una colección está presente tanto en encryptedFieldsMap como en schemaMap, se producirá un error.
    • bypass_query_analysis => Booleano | nil, cuando está activo (true) inhabilita el análisis automático de comandos de salida.
    • :crypt_shared_lib_path => [ String | nil ] Ruta que debe usarse para cargar la librería compartida crypt. Proporcionar esta opción anula las rutas de carga por defecto de la librería compartida para libmongocrypt.
    • :crypt_shared_lib_required => [ booleano | nil ] Si se requiere o no la librería compartida de cifrado. Si es 'true', se producirá un error si libmongocrypt no puede cargar una librería crypt_shared.

    Notas sobre el cifrado automático:

    • El cifrado automático es una funcionalidad exclusiva de la empresa que solo se aplica a las operaciones en una colección.
    • No se admite el cifrado automático para las 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 la encriptación automática falla en una operación, utiliza un MongoClient configurado con bypass_auto_encryption: true y utiliza ClientEncryption.encrypt para encriptar manualmente los valores.
    • 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



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
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
# Archivo 'lib/mongo/client.rb', línea 526

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

  procesado = process_addresses(direcciones_o_uri, opciones)

  uri = procesado[uri]
  direcciones = procesado[direcciones]
  opciones = procesado[:options]

  # Si el URI es un URI SRV, tómese nota de esto para que podamos comenzar
  # sondeo SRV si la topología es un clúster sharded.
  srv_uri = uri si uri.is_a?(URI::SRVProtocol)

  opciones = sí mismo.clase.canonicalizar_opciones_ruby(opciones)

  # La versión de la API del servidor se debe especificar como una string.
  # Sin embargo, es muy molesto tener que proporcionar siempre el número 1 como una string,
  # por lo tanto, haz el type cast al tipo string aquí.
  si (server_api = opciones[API del servidor]) && server_api.is_a?(encriptada)
    server_api = opciones::Redactado.Nuevo(server_api)
    si (Versión = server_api[:versión]).is_a?(entero)
      opciones[API del servidor] = server_api.fusionar(versión: Versión.to_s)
    end
  end

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

  # Para el service_name de gssapi, la opción por defecto se proporciona en un hash
  # (un nivel por debajo del nivel superior).
  merged_options = default_options(opciones)
  opciones.cada hacer |k, v|
    default_v = merged_options[k]
    v = default_v.fusionar(v) si default_v.is_a?(encriptada)
    merged_options[k] = v
  end
  opciones = merged_options

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

  @options = validate_new_options!(opciones)
  # 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
  validate_options!(direcciones, is_srv: uri.is_a?(URI::SRVProtocol))
  validate_authentication_options!

  database_options = @options.dup
  database_options.borrar(API del servidor)
  @database = Database.Nuevo(sí mismo, @options[:database], database_options)

  # Establecer temporalmente la supervisión para que las suscripciones de eventos puedan ser
  # configuración sin que haya un clúster
  @monitoring = Monitoring.Nuevo(@options)

  sdam_proc.llamar(sí mismo) si sdam_proc

  @connect_lock = Mutex (exclusión mutua).Nuevo
  @retry_policy = Reintentar::RetryPolicy.Nuevo(
    max_retries: @options[max_intentos_adaptativos] || Reintentar::Contrapresión::DEFAULT_MAX_RETRIES
  )
  @connect_lock.sincronizar hacer
    @cluster = clúster.Nuevo(
      direcciones,
      @monitoring,
      cluster_options.fusionar(srv_uri: srv_uri)
    )
  end

  begin
    # Desactivar la supervisión, se desconectará del clúster a partir de ahora
    remove_instance_variable(:@monitoring)

    si @options[opciones de cifrado automático]
      @connect_lock.sincronizar hacer
        crear_cifrador
      end
    end
  rescate StandardError
    begin
      @cluster.Cerrar
    rescate StandardError => e
      log_warn("Error al cerrar el clúster en el manejador de excepciones del constructor del cliente: #{e.class}: #{e}")
      # Descarta esta excepción para que se genere la excepción original
    end
    propagar
  end

  return a menos que ¿block_given?

  begin
    rendimiento(sí mismo)
  asegurar
    Cerrar
  end
end

Detalles de atributo de instancias

#clústerMongo::Cluster (solo lectura)

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

Devuelve:

Desde:

  • 2.0.0



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

def clúster
  @cluster
end

#databaseMongo::Database (readonly)

Devuelve la base de datos La base de datos en la que opera el cliente.

Devuelve:

  • (Mongo::Database)

    base de datos La base de datos en la que opera el cliente.

Desde:

  • 2.0.0



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

def database
  @database
end

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

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

Devuelve:

Desde:

  • 2.0.0



153
154
155
# Archivo 'lib/mongo/client.rb', línea 153

def encriptador
  @encryptador
end

#opcionesHash (solo lectura)

Devuelve opciones Las opciones de configuración.

Devuelve:

  • (encriptada)

    opciones Las opciones de configuración.

Desde:

  • 2.0.0



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

def opciones
  @options
end

#retry_policyMongo::Retryable::RetryPolicy (solo lectura)

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 La política de reintentos para retención de flujo y reintentos adaptativos.

Devuelve:

Desde:

  • 2.0.0



158
159
160
# Archivo 'lib/mongo/client.rb', línea 158

def retry_policy
  @retry_policy
end

Detalles del método de clase

.canonicalize_ruby_options(opciones) ⇒ Objeto

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.

Convierta las propiedades del mecanismo de autenticación a minúsculas, si se proporcionan, en las opciones especificadas, luego convierta las opciones en una instancia de Options::Redacted.

Desde:

  • 2.0.0



1177
1178
1179
1180
1181
1182
1183
1184
# Archivo 'lib/mongo/client.rb', línea 1177

def canonicalizar_opciones_ruby(opciones)
  opciones::Redactado.Nuevo(encriptada[opciones.map hacer |k, v|
    si [ propiedades_mecánica_autenticación, 'auth_mech_properties' ].incluir?(k) && v
      v = encriptada[v.map { |pk, pv| [ pk.minúscula, pv ] }]
    end
    [ k, v ]
  end])
end

Detalles del método de instancia

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

Determine si este cliente es equivalente a otro objeto.

Ejemplos:

Comprueba la igualdad del cliente.

client == other

Parámetros:

  • Otros (objeto)

    El objeto con el que comparar.

Devuelve:

  • (true, false)

    Si los objetos son iguales.

Desde:

  • 2.0.0



187
188
189
190
191
# Archivo 'lib/mongo/client.rb', línea 187

def ==(Otros)
  return false a menos que Otros.is_a?(Cliente)

  clúster == Otros.clúster && opciones == Otros.opciones
end

#[](collection_name, options = {}) ⇒ Mongo::Collection

Obtén un objeto de colección para el nombre de colección proporcionado.

Ejemplos:

Obtenga la colección.

client[:users]

Parámetros:

  • nombre_colección (String, Símbolo)

    El nombre de la colección.

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

    Las opciones para la colección.

Devuelve:

Desde:

  • 2.0.0



205
206
207
# Archivo 'lib/mongo/client.rb', línea 205

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

#cerrarverdadero

Cierra todas las conexiones.

Devuelve:

  • (cierto)

    Siempre verdadero.

Desde:

  • 2.1.0



878
879
880
881
882
883
884
# Archivo 'lib/mongo/client.rb', línea 878

def Cerrar
  @connect_lock.sincronizar hacer
    @closed = true
    cerrar
  end
  true
end

#close_encryptertrue

Cerrar el encriptador y limpiar los recursos de autoencriptación.

Devuelve:

  • (cierto)

    Siempre verdadero.

Desde:

  • 2.0.0



889
890
891
892
893
# Archivo 'lib/mongo/client.rb', línea 889

def close_encrypter
  @encryptador.Cerrar si @encryptador

  true
end

#¿closed?Boolean

Devuelve:

  • (booleano)

Desde:

  • 2.0.0



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

def ¿Cerrado?
  !!@closed
end

#cluster_optionsObjeto

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.

Desde:

  • 2.0.0



631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
# Archivo 'lib/mongo/client.rb', línea 631

def cluster_options
  # Compartimos clústeres cuando un nuevo cliente tiene diferentes CRUD_OPCIONES
  # se solicita; por lo tanto, el clúster no debería obtener ninguno de ellos
  # opciones al momento de la creación
  opciones.rechazar hacer |llave, _valor|
    CRUD_OPTIONS.incluir?(llave.to_sym)
  end.fusionar(
    # pero necesitamos volver a poner la base de datos para la autenticación...
    database: opciones[:database],

    # Introduce estas opciones por compatibilidad con versiones anteriores, pero ten en cuenta que
    # sus valores en el cliente y el clúster no tienen que coincidir -
    # las aplicaciones deben leer estos valores del cliente, no del clúster
    max_reintentos_lectura: opciones[:max_read_retries],
    read_retry_interval: opciones[intervalo_de_nueva_lectura],
    rastreador: trazador
  ).tocar hacer |opciones|
    # Si el cliente ya tiene un clúster, reenvía srv_uri al nuevo
    # clúster para mantener la supervisión SRV. Si el cliente es completamente nuevo,
    # su constructor establece srv_uri manualmente.
    opciones.update(srv_uri: clúster.opciones[:srv_uri]) si clúster
  end
end

#database_names(filtro = {}, opciones = {}) ⇒ arreglo<String>

Obtén los nombres de todas las bases de datos.

Ejemplos:

Obtener los nombres de las bases de datos.

client.database_names

Parámetros:

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

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

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

    Las opciones de comando.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :authorized_databases (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

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

  • :: sesión (Sesión)

    La sesión para usar.

  • :comment (objeto)

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

Devuelve:

  • (arreglo<String>)

    Los nombres de las bases de datos.

Desde:

  • 2.0.5



947
948
949
# Archivo 'lib/mongo/client.rb', línea 947

def database_names(filtro = {}, opciones = {})
  list_databases(filtro, true, opciones).collect { |información| información['nombre'] }
end

#encrypted_fields_mapHash | 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 un hash de mapa de campo cifrado si se proporciona al crear el cliente.

Devuelve:

  • (Hash | nil)

    Hash de mapa de campo encriptado, o nulo si no se establece.

Desde:

  • 2.0.0



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

def encrypted_fields_map
  @encrypted_fields_map ||= @options.obtener(opciones de cifrado automático, {})[mapa_de_campos_cifrados]
end

#get_session(options = {}) ⇒ Session | 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 una sesión para usar en operaciones si es posible.

Si la opción :sessionestá configurada, valida esa sesión y la devuelve. De lo contrario, si la implementación admite sesiones, crea una nueva sesión y la devuelve. Cuando se crea una nueva sesión, la sesión será implícita (el ciclo de vida es administrado por el driver) si se proporciona la opción :implícita, de lo contrario la sesión será explícita (el ciclo de vida la gestiona la aplicación). Si la implementación no admite la sesión, devuelve nil.

Parámetros:

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

    un conjunto personalizable de opciones

Opciones Hash (options):

  • :implicit (true | false)

    Cuando no se pasa una sesión, si 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



1135
1136
1137
1138
1139
# Archivo 'lib/mongo/client.rb', línea 1135

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

#hashInteger

Obtén el valor hash del cliente.

Ejemplos:

Obtén el valor hash del cliente.

client.hash

Devuelve:

  • (Número entero)

    El valor hash del cliente.

Desde:

  • 2.0.0



217
218
219
# Archivo 'lib/mongo/client.rb', línea 217

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

#inspectString

Obtén una inspección del cliente como string.

Ejemplos:

Inspecciona al cliente.

client.inspect

Devuelve:

  • (string)

    La string de inspección.

Desde:

  • 2.0.0



693
694
695
# Archivo 'lib/mongo/client.rb', línea 693

def inspeccionar
  "#<Mongo::cliente:0x#{object_id} clúster=#{clúster.summary}>"
end

#list_databases(filtro = {}, solo_nombre = false, opciones = {}) ⇒ arreglo<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 (encriptada) (por defecto: {})

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

  • name_only (verdadero, falso) (por defecto: false)

    Determina si solo se devolverá cada nombre de base de datos sin los metadatos completos.

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

    Las opciones de comando.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :authorized_databases (verdadero, falso)

    Un indicador que determina qué bases de datos se devuelven según los privilegios del usuario cuando el control de acceso está activado.

  • :comment (objeto)

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

  • :: sesión (Sesión)

    La sesión para usar.

Devuelve:

  • (arreglo<Hash>)

    La información de cada base de datos.

Desde:

  • 2.0.5



978
979
980
981
982
983
984
985
986
987
# Archivo 'lib/mongo/client.rb', línea 978

def list_databases(filtro = {}, name_only = false, opciones = {})
  cmd = { listDatabases: 1 }
  cmd[nombreSolo] = !!name_only
  cmd[filtro] = filtro a menos que filtro.¿vacío?
  cmd[bases de datos autorizadas] = true si opciones[:authorized_databases]
  Usar(Database::ADMIN)
    .database
    .read_command(cmd, opciones.fusionar(op_name: 'listDatabases'))
    .primero[Database::base de datos]
end

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

Devuelve una lista de objetos Mongo::base de datos.

Ejemplos:

Obtener una lista de objetos Mongo::base de datos.

client.list_mongo_databases

Parámetros:

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

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

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

    Las opciones de comando.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :: sesión (Sesión)

    La sesión para usar.

Devuelve:

Desde:

  • 2.5.0



1004
1005
1006
1007
1008
# Archivo 'lib/mongo/client.rb', línea 1004

def list_mongo_databases(filtro = {}, opciones = {})
  database_names(filtro, opciones).collect hacer |Nombre|
    Database.Nuevo(sí mismo, Nombre, opciones)
  end
end

#max_read_retriesEntero

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.

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:

  • (Número entero)

    La cantidad máxima de reintentos.

Desde:

  • 2.0.0



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

def max_read_retries
  opciones[:max_read_retries] || clúster::MAX_READ_RETRIES
end

#max_write_retriesentero

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.

Obtén el número máximo de veces que el cliente puede volver a intentar una operación de escritura cuando se utilizan reintentos de escritura heredados.

Devuelve:

  • (Número entero)

    La cantidad máxima de reintentos.

Desde:

  • 2.0.0



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

def max_write_retries
  opciones[:max_write_retries] || clúster::MAX_WRITE_RETRIES
end

#read_concernHash

Obtener el nivel de consistencia de lectura para este cliente.

Ejemplos:

Obtenga el nivel de consistencia de lectura del cliente.

client.read_concern

Devuelve:

  • (encriptada)

    El nivel de consistencia de lectura.

Desde:

  • 2.6.0



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

def read_concern
  opciones[:read_concern]
end

#read_preferenceBSON::Document

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

Ejemplos:

Obtén la preferencia de lectura.

client.read_preference

Devuelve:

  • (BSON::Document)

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

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

Desde:

  • 2.0.0



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

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

#read_retry_intervalFloat

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 intervalo, en segundos, en el que se reintenta la lectura al utilizar reintentos de lectura heredados.

Devuelve:

  • (Float)

    El intervalo.

Desde:

  • 2.0.0



671
672
673
# Archivo 'lib/mongo/client.rb', línea 671

def read_retry_interval
  opciones[intervalo_de_nueva_lectura] || clúster::READ_RETRY_INTERVAL
end

#reconectarverdadero

Reconectar el cliente.

Ejemplos:

Reconectar el cliente.

client.reconnect

Devuelve:

  • (cierto)

    Siempre verdadero.

Desde:

  • 2.1.0



903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
# Archivo 'lib/mongo/client.rb', línea 903

def Reconnecting
  direcciones = clúster.direcciones.map(&to_s)

  @connect_lock.sincronizar hacer
    begin
      cerrar
    rescate StandardError
      nulo
    end

    @cluster = clúster.Nuevo(direcciones, Monitoring, cluster_options)

    crear_cifrador si @options[opciones de cifrado automático]

    @closed = false
  end

  true
end

#server_selectorMongo::ServerSelector

Obtenga el selector de servidor. Utiliza la preferencia de lectura definida en las opciones del cliente o se establece por defecto en un selector de servidor primario.

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 primario por defecto.

Desde:

  • 2.5.0



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

def selector_de_servidor
  @server_selector ||= si read_preference
                         ServerSelector.Obtener(read_preference)
                       else
                         ServerSelector.primario
                       end
end

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

Nota:

Una sesión no puede ser utilizada por varios hilos al mismo tiempo; los objetos de sesión no son seguros para hilos.

Inicia una sesión.

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

Ejemplos:

Inicia una sesión.

client.start_session(causal_consistency: true)

Parámetros:

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

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

Devuelve:

Desde:

  • 2.5.0



1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
# Archivo 'lib/mongo/client.rb', línea 1029

def start_session(opciones = {})
  sesión = get_session!(opciones.fusionar(implicit: false))
  si ¿block_given?
    begin
      rendimiento sesión
    asegurar
      sesión.end_session
    end
  else
    sesión
  end
end

#summaryString

Nota:

El formato y diseño exactos de la string de resumen devuelta no forman parte de la API pública del driver y pueden cambiarse en cualquier momento.

Obtenga un resumen del estado del cliente.

Devuelve:

  • (string)

    La string resumen.

Desde:

  • 2.7.0



705
706
707
# Archivo 'lib/mongo/client.rb', línea 705

def Resumen
  "#<Grupo de clientes=#{clúster.resumen}>"
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 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



1197
1198
1199
# Archivo 'lib/mongo/client.rb', línea 1197

def timeout_ms
  @options[:timeout_ms]
end

#timeout_secFloat | 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 el valor de la opción timeout_ms convertido a segundos.

Devuelve:

  • (Float | nil)

    Valor de la opción timeout_ms convertida en segundos.

Desde:

  • 2.0.0



1203
1204
1205
1206
1207
1208
1209
# Archivo 'lib/mongo/client.rb', línea 1203

def tiempo_límite_seg
  si timeout_ms.nil?
    nulo
  else
    timeout_ms / 1_000.0
  end
end

#trazadorTracing::Tracer | nil

Obtén el trazador configurado para este cliente.

Devuelve:

  • (Tracing::Tracer | nil)

    El rastreador configurado para este cliente.

Desde:

  • 2.0.0



1214
1215
1216
1217
1218
1219
1220
1221
# Archivo 'lib/mongo/client.rb', línea 1214

def trazador
  opciones de trazado = @options[trazando] || {}
  @tracer ||= Trazado.create_tracer(
    activado: opciones de trazado[con autorización],
    query_text_max_length: opciones de trazado[:query_text_max_length],
    otel_tracer: opciones de trazado[trazador]
  )
end

#update_options(new_options) ⇒ 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.

Actualiza las opciones de este cliente a partir de las nuevas opciones, validando todas las opciones.

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

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

Parámetros:

  • nuevas_opciones (encriptada)

    Las nuevas opciones a usar.

Devuelve:

  • (encriptada)

    Se modificaron las nuevas opciones que se escribieron en el cliente.

Desde:

  • 2.0.0



806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
# Archivo 'lib/mongo/client.rb', línea 806

def update_options(nuevas_opciones)
  old_options = @options

  nuevas_opciones = sí mismo.clase.canonicalizar_opciones_ruby(nuevas_opciones || {})

  validate_new_options!(nuevas_opciones).tocar hacer |opciones|
    # Nuestras opciones están congeladas
    opciones = @options.dup
    opciones.borrar(guardar) si opciones[guardar] && opciones[conformidad_de_lectura]
    opciones.borrar(conformidad_de_lectura) si opciones[conformidad_de_lectura] && opciones[guardar]

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

    auto_encryption_options_changed =
      @options[opciones de cifrado automático] != old_options[opciones de cifrado automático]

    # Si hay nuevas auto_encryption_options, crea un nuevo encriptador.
    # De lo contrario, permite que el nuevo cliente comparta un encriptador con el
    # cliente original.
    #
    # Si auto_encryption_options son nulos, establecer @encrypter en nulo, pero no
    # cerrar el encriptador porque aún puede ser utilizado por el cliente original.
    si @options[opciones de cifrado automático] && auto_encryption_options_changed
      @connect_lock.sincronizar hacer
        crear_cifrador
      end
    elsif @options[opciones de cifrado automático].nil?
      @connect_lock.sincronizar hacer
        @encryptador = nulo
      end
    end

    validate_options!
    validate_authentication_options!
  end
end

#use(name) ⇒ Mongo::Client

Nota:

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

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

Ejemplos:

Crea un cliente para la base de datos `users'.

client.use(:users)

Parámetros:

  • Nombre (String, Símbolo)

    El nombre de la base de datos que se va a utilizar.

Devuelve:

Desde:

  • 2.0.0



760
761
762
# Archivo 'lib/mongo/client.rb', línea 760

def Usar(Nombre)
  con(database: Nombre)
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 pidan que se envíen notificaciones para todos los cambios que se produzcan en el clúster del cliente.

Ejemplos:

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

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

Devuelve:

  • (ChangeStream)

    El objeto de flujo de cambios.

Desde:

  • 2.6.0



1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
# Archivo 'lib/mongo/client.rb', línea 1104

def reloj(pipeline = [], opciones = {})
  return Usar(Database::ADMIN).reloj(pipeline, opciones) a menos que database.Nombre == Database::ADMIN

  view_options = opciones.dup
  view_options[tipo_de_cursor] = tailable_await si opciones[; tiempo_máximo_espera_ms]

  mongo::Colección::vista::ChangeStream.Nuevo(
    mongo::Colección::vista.Nuevo(sí mismo["#{comando de base de datos::}.aggregate"], {}, view_options),
    pipeline,
    mongo::Colección::vista::ChangeStream::clúster,
    opciones
  )
end

#con(new_options = nil) ⇒ Mongo::Client

Nota:

Dependiendo de las opciones dadas, 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 supervisión en el nuevo cliente se establecen en el conjunto por defecto de suscriptores de eventos y ninguno de los suscriptores en el cliente original se copia.

Crea un nuevo cliente con las opciones proporcionadas fusionadas sobre las opciones existentes de este cliente. Útil para cambios puntuales para elegir opciones específicas sin alterar el cliente original.

Ejemplos:

Obtén un cliente con opciones modificadas.

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

Parámetros:

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

    Las nuevas opciones a usar.

Devuelve:

Desde:

  • 2.0.0



782
783
784
785
786
787
788
789
790
# Archivo 'lib/mongo/client.rb', línea 782

def con(nuevas_opciones = nulo)
  clonar.tocar hacer |Cliente|
    opciones = Cliente.update_options(nuevas_opciones || opciones::Redactado.Nuevo)
    Database.Cree(Cliente)
    # No podemos usar el mismo clúster si algunas opciones que lo afectarían
    # Han cambiado.
    clúster.Cree(Cliente, supervisión: opciones[supervisión]) si cluster_modifying?(opciones)
  end
end

#with_session(options = {}) ⇒ Objeto

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.

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

Si se establece la opción :session, valida esa sesión y la utiliza. De lo contrario, si la implementación admite sesiones, se crea una nueva sesión y se usa. Cuando se crea una nueva sesión, ésta será implícita (el ciclo de vida lo gestiona el controlador) si se selecciona la opción :implicit, en caso contrario será explícita (el ciclo de vida lo gestiona la aplicación). Si la implementación no admite sesión, ciérralo en nil.

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

Parámetros:

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

    un conjunto personalizable de opciones

Opciones Hash (options):

  • :implicit (true | false)

    Cuando no se pasa una sesión, si se debe crear una sesión implícita.

  • :: sesión (Sesión)

    La sesión para validar y devolver.

Desde:

  • 2.0.0



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

def con_sesión(opciones = {})
  # PENDIENTE: Añadir esto de nuevo en RUBY-3174.
  # assert_not_closed

  sesión = get_session(opciones)

  rendimiento sesión
asegurar
  sesión.end_session si sesión && sesión.implicit?
end

#write_concernMongo::WriteConcern

Obtén el nivel de confirmación de escritura (write concern) para este cliente. Si no se proporciona ninguna opción, se utilizará por defecto un acuse de recibo de servidor único.

Ejemplos:

Consultar el nivel de confirmación de escritura (write concern) del cliente.

client.write_concern

Devuelve:

Desde:

  • 2.0.0



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

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