Clase: Mongo::Cliente
- Hereda:
-
Objeto
- Objeto
- Mongo::Cliente
- 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á.
Colapso delresumen constante
- OPCIONES CRUD =
Las opciones que no afectan el comportamiento de un clúster y sus subcomponentes.
[ :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.
[ :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.
[ 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.
%w( 1 ).freeze
Constantes incluidas desde Loggable
Colapso delresumen de atributos de instancia
-
#cluster ⇒ Mongo::Cluster
solo lectura
Clúster El clúster de servidores para el cliente.
-
#database ⇒ Mongo::Database
solo lectura
Base de datos La base de datos en la que está operando el cliente.
-
#encriptador ⇒ Mongo::Crypt::AutoEncrypter
solo lectura
El objeto que encapsula el comportamiento de cifrado automático.
-
#options ⇒ Hash
solo lectura
Opciones Las opciones de configuración.
Colapso delresumen del método de clase
-
.canonicalize_ruby_options(options) ⇒ objeto
privada
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.
Colapso del resumen del método de instancia
-
#==(otro) ⇒ verdadero, falso (también: #eql?)
Determinar si este cliente es equivalente a otro objeto.
-
#[](nombre_de_colección, opciones = {}) ⇒ Mongo::Collection
Obtenga un objeto de colección para el nombre de colección proporcionado.
-
#cerrar ⇒ verdadero
Cerrar todas las conexiones.
-
#close_encrypter ⇒ verdadero
Cierre el cifrador y limpie los recursos de cifrado automático.
- #cerrado? ⇒ Booleano
- #cluster_options ⇒ Objeto privada
-
#nombres_de_base_de_datos(filtro = {}, opciones = {}) ⇒ Matriz<String>
Obtener los nombres de todas las bases de datos.
-
#mapa_de_campos_encriptados ⇒ Hash | nulo
privada
Devuelve el hash del mapa de campo cifrado si se proporciona al crear el cliente.
-
#get_session(options = {}) ⇒ Session | nil
privada
Devuelve una sesión para utilizar en operaciones si es posible.
-
#hash ⇒ Entero
Obtén el valor hash del cliente.
-
#inicializar(direcciones_o_uri, opciones = nulo) ⇒ Cliente
constructor
Instancia un nuevo cliente de driver.
-
#inspeccionar ⇒ Cadena
Obtenga una inspección del cliente como una cadena.
-
#lista_bases_de_datos(filtro = {}, solo_nombre = falso, opciones = {}) ⇒ Array<Hash>
Obtener información de cada base de datos.
-
#lista_mongo_databases(filtro = {}, opciones = {}) ⇒ Array<Mongo::Database>
Devuelve una lista de objetos Mongo::Database.
-
#max_read_retries ⇒ Entero
privada
Obten el número máximo de veces que el cliente puede reintentar una operación de lectura al utilizar reintentos de lectura heredados.
-
#max_write_retries ⇒ Entero
privada
Obtenga la cantidad máxima de veces que el cliente puede reintentar una operación de escritura cuando utiliza reintentos de escritura heredados.
-
#leer_preocupación ⇒ Hash
Obtenga la información de lectura preocupante para este cliente.
-
#preferencia_de_lectura ⇒ BSON::Documento
Obtenga la preferencia de lectura de las opciones pasadas al cliente.
-
#intervalo_de_reintentar_lectura ⇒ Flotante
privada
Obtenga el intervalo, en segundos, en el que se reintenta la lectura al utilizar reintentos de lectura heredados.
-
#reconectar ⇒ verdadero
Vuelva a conectar el cliente.
-
#server_selector ⇒ Mongo::ServerSelector
Obtenga el selector de servidor.
-
#start_session(opciones = {}) ⇒ Sesión
Iniciar una sesión.
-
#resumen ⇒ Cadena
Obtenga un resumen del estado del cliente.
-
#timeout_ms ⇒ Integer | nil
privada
Valor de la opción timeout_ms si está configurada.
-
#timeout_sec ⇒ Float | nil
privada
Valor de la opción timeout_ms convertido a segundos.
-
#update_options(new_options) ⇒ Hash
privada
Actualiza las opciones de este cliente desde new_options, validando todas las opciones.
-
#use(nombre) ⇒ Mongo::Client
Crea un nuevo cliente configurado para utilizar la base de datos con el nombre proporcionado y utilizando las otras opciones configuradas en este cliente.
-
#watch(tubería = [], opciones = {}) ⇒ ChangeStream
A partir de la versión 3.6 del servidor MongoDB, se admite una etapa de canalización “$changeStream” en el marco de agregación.
-
#con(nuevas_opciones = nulo) ⇒ Mongo::Cliente
Crea un nuevo cliente con las opciones pasadas fusionadas con las opciones existentes de este cliente.
-
#with_session(opciones = {}, &block) ⇒ Objeto
privada
Crea una sesión para usar en operaciones si es posible y la entrega al bloque proporcionado.
-
#escribir_preocupación ⇒ Mongo::WriteConcern
Obtén el nivel de confirmación de escritura (write concern) para este cliente.
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.
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, = nulo) = ? .dup : {} procesados = direcciones_de_proceso(direcciones_o_uri, ) uri = procesados[:uri] direcciones = procesados[:direcciones] = 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) = yo.clase.() # 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 = [: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) [: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 = .borrar(:sdam_proc) # Para gssapi service_name, la opción predeterminada se proporciona en un hash # (un nivel por debajo del nivel superior). = () .cada hacer |k, v| default_v = [k] Si Picadillo === default_v v = default_v.unir(v) end [k] = v end = .claves.cada hacer |k| Si [k].nil? .borrar(k) end end @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 (direcciones, is_srv: uri.is_a?(URI::Protocolo SRV)) = @opciones.dup .borrar(:server_api) @database = Database.Nuevo(yo, @opciones[:database], ) # 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, .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
#cluster ⇒ Mongo::Cluster (solo lectura)
Devuelve el clúster El clúster de servidores para el cliente.
139 140 141 |
# Archivo 'lib/mongo/client.rb', línea 139 def clúster @cluster end |
#database ⇒ Mongo::Database (readonly)
Devuelve la base de datos La base de datos en la que está operando el cliente.
142 143 144 |
# Archivo 'lib/mongo/client.rb', línea 142 def database @database end |
#encriptador ⇒ Mongo::Crypt::AutoEncrypter (solo lectura)
Devuelve el objeto que encapsula el comportamiento de cifrado automático.
149 150 151 |
# Archivo 'lib/mongo/client.rb', línea 149 def encriptador @encrypter end |
#opciones ⇒ Hash (solo lectura)
Opciones de retorno Las opciones de configuración.
145 146 147 |
# Archivo 'lib/mongo/client.rb', línea 145 def @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.
1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 |
# Archivo 'lib/mongo/client.rb', línea 1162 def () opciones::Redactado.Nuevo(Picadillo[.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.
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 && == otros. end |
#[](nombre_de_colección, opciones = {}) ⇒ Mongo::Collection
Obtenga un objeto de colección para el nombre de colección proporcionado.
195 196 197 |
# Archivo 'lib/mongo/client.rb', línea 195 def [](nombre_de_colección, = {}) database[nombre_de_colección, ] end |
#cerrar ⇒ verdadero
Cerrar todas las conexiones.
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_encrypter ⇒ true
Cierre el cifrador y limpie los recursos de cifrado automático.
876 877 878 879 880 |
# Archivo 'lib/mongo/client.rb', línea 876 def cerrar_encriptador @encrypter.cerrar Si @encrypter true end |
#cerrado? ⇒ Booleano
856 857 858 |
# Archivo 'lib/mongo/client.rb', línea 856 def ¿cerrado? !!@cerrado end |
#cluster_options ⇒ 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.
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 # 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 .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: [: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: [:máximo de reintentos de lectura], intervalo de reintento de lectura: [:intervalo de reintento de lectura], ).grifo hacer || # 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 .update(srv_uri: clúster.[:srv_uri]) end end end |
#nombres_de_base_de_datos(filtro = {}, opciones = {}) ⇒ Matriz<String>
Obtener los nombres de todas las bases de datos.
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_encriptados ⇒ Hash | 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.
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.
1118 1119 1120 1121 1122 |
# Archivo 'lib/mongo/client.rb', línea 1118 def obtener_sesión( = {}) get_session!() rescate Error::SessionsNotSupported nulo end |
#hash ⇒ Entero
Obtén el valor hash del cliente.
207 208 209 |
# Archivo 'lib/mongo/client.rb', línea 207 def hash [clúster, ].hash end |
#inspeccionar ⇒ Cadena
Obtenga una inspección del cliente como una cadena.
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.
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.
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, ) end end |
#max_read_retries ⇒ Entero
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.
642 643 644 |
# Archivo 'lib/mongo/client.rb', línea 642 def max_read_retries [:máximo de reintentos de lectura] || Clúster::MÁXIMO DE REINTENTOS DE LECTURA end |
#max_write_retries ⇒ Entero
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.
662 663 664 |
# Archivo 'lib/mongo/client.rb', línea 662 def máximo de reintentos de escritura [:máximo de reintentos de escritura] || Clúster::MÁXIMO DE REINTENTOS DE ESCRITURA end |
#leer_preocupación ⇒ Hash
Obtenga la información de lectura preocupante para este cliente.
839 840 841 |
# Archivo 'lib/mongo/client.rb', línea 839 def leer_preocupación [:read_concern] end |
#read_preference ⇒ BSON::Document
Obtenga la preferencia de lectura de las opciones pasadas al cliente.
722 723 724 |
# Archivo 'lib/mongo/client.rb', línea 722 def read_preference @read_preference ||= [:leer] end |
#intervalo_de_reintentar_lectura ⇒ Flotante
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.
652 653 654 |
# Archivo 'lib/mongo/client.rb', línea 652 def intervalo de reintento de lectura [:intervalo de reintento de lectura] || Clúster::INTERVALO DE REINTENTO DE LECTURA end |
#reconectar ⇒ verdadero
Vuelva a conectar el cliente.
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, ) Si @opciones[:opciones de cifrado automático] construir_encrypter end @cerrado = false end true end |
#selector_de_servidor ⇒ Mongo::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.
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
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.
1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 |
# Archivo 'lib/mongo/client.rb', línea 1011 def inicio_sesión( = {}) sesión = get_session!(.unir(implicit: false)) Si ¿bloque_dado? begin rendimiento sesión asegurar sesión.fin_sesión end else sesión end end |
#resumen ⇒ Cadena
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.
686 687 688 |
# Archivo 'lib/mongo/client.rb', línea 686 def resumen "#<Client cluster=#{cluster. summary}>" end |
#timeout_ms ⇒ Integer | 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.
1184 1185 1186 |
# Archivo 'lib/mongo/client.rb', línea 1184 def tiempo de espera_ms @opciones[:tiempo de espera_ms] end |
#timeout_sec ⇒ Float | 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.
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).
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 () = @opciones = yo.clase.( || {}) ().grifo hacer |opta| #Nuestras opciones están congeladas = @opciones.dup Si [:escribir] && opta[:escribir_preocupación] .borrar(:escribir) end Si [:escribir_preocupación] && opta[:escribir] .borrar(:escribir_preocupación) end .update(opta) @opciones = .freeze = @opciones[:opciones de cifrado automático] != [: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] && @connect_lock.sincronizar hacer construir_encrypter end elsif @opciones[:opciones de cifrado automático].nil? @connect_lock.sincronizar hacer @encrypter = nulo end end end end |
#use(nombre) ⇒ Mongo::Client
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.
741 742 743 |
# Archivo 'lib/mongo/client.rb', línea 741 def uso(Nombre) con(database: Nombre) end |
#watch(tubería = [], opciones = {}) ⇒ ChangeStream
Un flujo de cambios solo permite el nivel de consistencia de lectura de 'mayoría'.
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.
1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 |
# Archivo 'lib/mongo/client.rb', línea 1088 def reloj(pipeline = [], = {}) return uso(Database::ADMINISTRACIÓN).reloj(pipeline, ) a no ser que database.Nombre == Database::ADMINISTRACIÓN = .dup [:tipo_de_cursor] = :tailable_await Si [:tiempo máximo de espera ms] Mongo::Colección::vista::ChangeStream.Nuevo( Mongo::Colección::vista.Nuevo(yo["#{Basede datos::COMANDO}.aggregate"], {}, ), pipeline, Mongo::Colección::vista::ChangeStream::GRUPO, ) end |
#con(nuevas_opciones = nulo) ⇒ Mongo::Cliente
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.
763 764 765 766 767 768 769 770 771 772 773 |
# Archivo 'lib/mongo/client.rb', línea 763 def con( = nulo) clon.grifo hacer |Cliente| opta = Cliente.( || opciones::Redactado.Nuevo) Database.Cree(Cliente) # No podemos usar el mismo cluster si hay algunas opciones que lo afecten # han cambiado. Si (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.
1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 |
# Archivo 'lib/mongo/client.rb', línea 1144 def con_sesión( = {}, Ybloque) # TODO: Agregar esto nuevamente en RUBY-3174. # assert_not_closed sesión = obtener_sesión() rendimiento sesión asegurar Si sesión && sesión.implicit? sesión.fin_sesión end end |
#escribir_preocupación ⇒ Mongo::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.
852 853 854 |
# Archivo 'lib/mongo/client.rb', línea 852 def escribir_preocupación @write_concern ||= Escribir preocupación.Obtener([:escribir_preocupación] || [:escribir]) end |