Classificação: Mongo::Client
- Herda:
-
Objeto
- Objeto
- Mongo::Client
- Estendido por:
- Encaminhável
- Inclui:
- Logável
- Definido em:
- lib/mongo/ cliente.rb
Visão geral
O cliente é o ponto de entrada do driver e é o principal objeto com o qual haverá interação.
Colapsode resumo constante
- CRUD_OPTIONS =
As opções que não afetam o comportamento de um cluster e seus subcomponentes.
[ :auto_encryption_options, :database, :read, :read_concern, :write, :write_concern, :retry_reads, :max_read_retry, :read_retry_interval, :retry_writes, :max_write_retry, :max_adaptive_retry, :enable_overload_tartargeting, :timeout_ms, # Opções que não podem estar aqui atualmente: # # :server_selection_timeout # O tempo limite de seleção do servidor MongoDB é usado pelo construtor do cluster para descobrir # quanto tempo esperar pela verificação inicial no modo de compatibilidade, mas uma vez # o cluster é inicializado e não usa mais esse tempo limite. # Infelizmente, o seletor de servidor lê o tempo limite de seleção do servidor de # o cluster, e esse comportamento é exigido pelo Cluster#next_primary # que não aceita argumentos. Quando próximo_primary for removido, podemos revisar # usando o mesmo objeto de cluster com diferentes tempos limite de seleção de servidor. ].congelar
- VALID_OPTIONS =
Opções válidas do cliente.
%i[ app_name auth_mech auth_mech_properties auth_source auto_encryption_options bg_error_backtrace limpeza compressors direct_connection enable_overload_targetting Conecte connect_timeout database heartbeat_frequency id_generator load_balanced local_threshold logger log_prefix max_adaptive_retry max_connecting max_idle_time max_pool_size max_read_retry max_write_retry min_pool_size Monitoramento monitoring_io Senha Plataforma populator_io ler read_concern read_retry_interval replica_set resolv_options retry_reads retry_writes digitalizar 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 rastreamento truncate_logs utilizador wait_queue_timeout wrap_libraries escrever write_concern zlib_compression_level ].congelar
- VALID_COMPRESSORS =
Os algoritmos de compressão suportados pelo driver.
[ mongo::protocolo::Compactado::zstd, mongo::protocolo::Compactado::Snappy, mongo::protocolo::Compactado::zlib ].congelar
- VALID_SERVER_API_VERSIONS =
As versões conhecidas da API do servidor.
%w[ 1 ].congelar
Constantes incluídas do Loggable
Recolhimento do Resumo do atributo de instância
-
#cluster ➤ Mongo::Cluster
Somente leitura
Cluster O cluster de servidores para o cliente.
-
#database ➤ Mongo::Database
Somente leitura
Banco de dados O banco de dados de dados no qual o cliente está operando.
-
#encrypter } Mongo::Crypt::AutoEncrypter
Somente leitura
O objeto que encapsula o comportamento de criptografia automática.
-
#opções ➤ Hash
Somente leitura
Opções As opções de configuração.
-
#retry_policy ➤ Mongo::Retryable::RetryPolicy
Somente leitura
privado
A política de novas tentativas para backpressure e adaptativa.
Recolhimento do Resumo do método de classe
-
.canonicalize_ruby_options(opções) ➤ Objeto
privado
As propriedades do mecanismo de autenticação em minúsculas, se fornecidas, nas opções especificadas, convertem as opções em uma instância de Options::Redacted.
Recolhimento do Resumo do método de instância
-
#==(outros) ➤ verdadeiro, falso (também: #eql?)
Determine se este cliente é equivalente a outro objeto.
-
#[](collection_name, options = {}) ➤ Mongo::Collection
Obtenha um objeto de coleção para o nome da coleção fornecido.
-
#close ➤ true
Feche todas as conexões.
-
#close_encrypter ➤ true
Feche o criptografador e limpe os recursos de criptografia automática.
- #fechado? ➤ Booleano
- #cluster_options ➤ Objeto privado
-
#database_names(filter = {}, opts = {}) ➤ Array<String>
Obtenha os nomes de todos os bancos de dados.
-
#encryption_fields_map ➤ Hash | nada
privado
Retorna o hash do mapa de campo criptografado se fornecido ao criar o cliente.
-
#get_session(options = {}) ➤ Sessão | nada
privado
Retorna uma sessão para usar para operações, se possível.
-
#hash ➤ inteiro
Obtenha o valor de hash do cliente.
-
#initialize(addresses_or_uri, options = nil) ⇒ Cliente
construtor
Instancie um novo cliente de driver.
-
#inspecionar ➤ string
Obtenha uma inspeção do cliente como uma string.
-
#list_databases(filter = {}, name_only = false, opts = {}) ➤ Array<Hash>
Obtenha informações para cada banco de dados.
-
.<Mongo::Database>
Retorna uma lista de objetos Mongo::Database.
-
#max_read_retry ➤ Inteiro
privado
Obtenha o número máximo de vezes que o cliente pode tentar novamente uma operação de leitura ao usar novas tentativas de leitura legado .
-
#max_write_retry ➤ Inteiro
privado
Obtenha o número máximo de vezes que o cliente pode tentar novamente uma operação de gravação ao usar novas tentativas de gravação herdadas.
-
#monitoramento ➤ Monitoramento
privado
Monitoramento O monitoramento.
-
#read_concern ➤ Hash
Obtenha a preocupação de leitura para este cliente.
-
#read_preference ➤ BSON::Document
Obtenha a preferência de leitura a partir das opções passadas para o cliente.
-
#read_retry_interval ➤ Flutuante
privado
Obtenha o intervalo, em segundos, em que as tentativas de leitura ao usar tentativas de leitura herdadas.
-
#reconectar ➤ verdadeiro
Reconectar o cliente.
-
#reset_cluster!(monitoramento: nil) ⇒ Objeto
privado
Substitui o cluster deste cliente por uma nova instância criada a partir das opções atuais do cliente.
-
#reset_database! ⇒ Object
privado
Substitui o banco de dados deste cliente por uma nova instância criada a partir das opções atuais do cliente.
-
#server_selector ➤ Mongo::ServerSelector
Obtenha o seletor de servidor.
-
#start_session(options = {}) ➤ Session
Inicie uma sessão.
-
#resumo ➤ string
Obtenha um resumo do estado do cliente.
-
#timeout_ms ⇒ Integer | nil
privado
Valor da opção timeout_ms se definido.
-
#timeout_sec ⇒ Float | nil
privado
Valor da opção timeout_ms convertido em segundos.
-
# traçar ➤ Rastreamento::Tracer | nada
Obtenha o rastreador configurado para este cliente.
-
#update_options(new_options) ➤ Hash
privado
Atualiza as opções deste cliente a partir de new_options, validando todas as opções.
-
#use(name) ➤ Mongo::Client
Cria um novo cliente configurado para utilizar o banco de dados com o nome fornecido e utilizando as outras opções configuradas neste cliente.
-
#watch(pipeline = [], options = {}) ➤ ChangeStream
Permite que os usuários solicitem que sejam enviadas notificações para todas as alterações que ocorrem no cluster do cliente.
-
#com(new_options = nil) ➤ Mongo::Client
Cria um novo cliente com as opções passadas mescladas sobre as opções existentes deste cliente.
-
#with_session(opções = {}) ➤ Objeto
privado
Cria uma sessão para usar para operações, se possível, e a gera para o bloco fornecido.
-
#write_concern ➤ Mongo::WriteConcern
Obtenha a write concern para esse cliente.
Métodos incluídos no Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger
Detalhes do construtor
#initialize(addresses_or_uri, options = nil) ⇒ Cliente
Instancie um novo cliente de driver.
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 629 630 631 632 633 634 635 636 637 638 639 640 641 |
# File 'lib/mongo/ cliente.rb', linha 539 def inicializar(endereços_or_uri, = nada) = ? .dup : {} processado = process_addresses(endereços_or_uri, ) uri = processado[:uri] Endereços = processado[:addresses] = processado[:opções] # Se o URI for um URI SRV, observe isto para que possamos começar # Pesquisa SRV se a topologia for um cluster fragmentado. srv_uri = uri se uri.is_a?(URI::Protocolo SRV) = auto.classe.() # A versão da API do servidor é especificada para ser uma string. # No entanto, é muito trabalhoso sempre fornecer o número 1 como uma string, #, portanto, convertido para o tipo de string aqui. se (server_api = [:server_api]) && server_api.is_a?(Hash) server_api = Opções::Editado.Novo(server_api) se (Versão = server_api[:version]).is_a?(Inteiro) [:server_api] = server_api.mesclar(versão: Versão.to_s) end end # Tratamento especial para sdam_proc, pois ele é usado apenas durante o cliente # construção sdam_proc = .excluir(:sdam_proc) # Para gssapi service_name, a opção padrão é fornecida em um hash # (um nível abaixo do nível superior). = () .cada fazer |k, v| default_v = [k] v = default_v.mesclar(v) se default_v.is_a?(Hash) [k] = v end = .keys.cada fazer |k| .excluir(k) se [k].nada? end @opções = () # Suporte ao objeto WriteConcern # if @options[:write_concern].is_a?(WriteConcern::Base) # # Cache a instância para que não a reconstruímos desnecessariamente. # @write_concern = @options[:write_concern] # @options[:write_concern] = @write_concern.options # end @opções.congelar (Endereços, is_srv: uri.is_a?(URI::Protocolo SRV)) = @opções.dup .excluir(:server_api) @database = Database.Novo(auto, @opções[:database], ) # Defina temporariamente o monitoramento para que as assinaturas de evento possam ser # configurado sem que haja um cluster @monitoring = Monitoramento.Novo(@opções) sdam_proc.Chame(auto) se sdam_proc @connect_lock = Mutex.Novo @retry_policy = Repetitivo::Política de repetição.Novo( max_retry: @opções[:max_adaptive_retry] || Repetitivo::Contrapressão::DEFAULT_MAX_RETRIES ) @connect_lock.sincronizar fazer @cluster = cluster.Novo( Endereços, @monitoring, .mesclar(srv_uri: srv_uri) ) end começar # Desconfigure o monitoramento, ele será retirado do cluster a partir de agora remove_instance_variable(:@monitoring) se @opções[:auto_encryption_options] @connect_lock.sincronizar fazer build_encrypter end end salvar StandardError começar @cluster.Fechar salvar StandardError => e log_service("Erro ao fechar o cluster no manipulador de exceções do construtor do cliente: #{e.classe}: #{e}") # Solte esta exceção para que a exceção original seja gerada end aumentar end Método a menos que block_given? começar rendimento(auto) garantir Fechar end end |
Detalhes do atributo da instância
#cluster ➤ Mongo::Cluster (readonly)
Retorna cluster O cluster de servidores para o cliente.
143 144 145 |
# File 'lib/mongo/ cliente.rb', linha 143 def cluster @cluster end |
#database ➤ Mongo::Database (readonly)
Retorna banco de dados O banco de dados no qual o cliente está operando.
146 147 148 |
# File 'lib/mongo/ cliente.rb', linha 146 def database @database end |
#encrypter ➤ Mongo::Crypt::AutoEncrypter (somente leitura)
Retorna o objeto que encapsula o comportamento de criptografia automática.
153 154 155 |
# File 'lib/mongo/ cliente.rb', linha 153 def criptografador @encrypter end |
#opções ➤ Hash (somente leitura)
Retorna opções As opções de configuração.
149 150 151 |
# File 'lib/mongo/ cliente.rb', linha 149 def @opções end |
#retry_policy ⇒ Mongo::Retryable::RetryPolicy (readonly)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna a política de repetição para contrapressão e novas tentativas adaptáveis.
158 159 160 |
# File 'lib/mongo/ cliente.rb', linha 158 def retry_policy @retry_policy end |
Detalhes do método de classe
.canonicalize_ruby_options(opções) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
As propriedades do mecanismo de autenticação em minúsculas, se fornecidas, nas opções especificadas, convertem as opções em uma instância de Options::Redacted.
1215 1216 1217 1218 1219 1220 1221 1222 |
# File 'lib/mongo/ cliente.rb', linha 1215 def () Opções::Editado.Novo(Hash[.map fazer |k, v| se [ :auth_mech_properties, 'auth_mech_properties' ].incluir?(k) && v v = Hash[v.map { |pk, pv| [ pk.downcase, pv ] }] end [ k, v ] end]) end |
Detalhes do método de instância
#==(outro) ➤ true, false Também conhecido como: eql?
Determine se este cliente é equivalente a outro objeto.
186 187 188 189 190 |
# File 'lib/mongo/ cliente.rb', linha 186 def ==(Outro) Método false a menos que Outro.is_a?(Cliente) cluster == Outro.cluster && == Outro. end |
#[](collection_name, options = {}) ➤ Mongo::Collection
Obtenha um objeto de coleção para o nome da coleção fornecido.
204 205 206 |
# File 'lib/mongo/ cliente.rb', linha 204 def [](collection_name, = {}) database[collection_name, ] end |
#close ➤ true
Feche todas as conexões.
916 917 918 919 920 921 922 |
# File 'lib/mongo/ cliente.rb', linha 916 def Fechar @connect_lock.sincronizar fazer @closed = true do_close end true end |
#close_encrypter ➤ true
Feche o criptografador e limpe os recursos de criptografia automática.
927 928 929 930 931 |
# File 'lib/mongo/ cliente.rb', linha 927 def close_encrypter @encrypter.Fechar se @encrypter true end |
#fechado? ➤ Booleano
907 908 909 |
# File 'lib/mongo/ cliente.rb', linha 907 def fechado? !!@closed end |
#cluster_options ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 |
# File 'lib/mongo/ cliente.rb', linha 644 def # Compartilhamos clusters quando um novo cliente com CRUD_OPTIONS diferente # é solicitado; portanto, o cluster não deve receber nenhum desses # opções na instanciação .rejeitar fazer |chave, _value| CRUD_OPTIONS.incluir?(chave.to_sym) end.mesclar( # mas precisa colocar o banco de dados de volta para autenticação... database: [:database], # Coloque essas opções para compatibilidade com legados, mas observe que # seus valores no cliente e no cluster não precisam corresponder - # os aplicativos devem ler esses valores do cliente, não do cluster max_read_retrys: [:max_read_retry], read_retry_interval: [:read_retry_interval], rastreador: rastreador ).toque fazer || # Se o cliente já tiver um cluster, encaminhe srv_uri para o novo # cluster para manter o monitoramento SRV. Se o cliente for novo, # seu construtor define srv_uri manualmente. .update(srv_uri: cluster.[:srv_uri]) se cluster end end |
#database_names(filter = {}, opts = {}) ➤ Array<String>
Obtenha os nomes de todos os bancos de dados.
985 986 987 |
# File 'lib/mongo/ cliente.rb', linha 985 def database_names(filtro, filtro = {}, opciona = {}) list_databases(filtro, filtro, true, opciona).coletar { |informações| informações['nome'] } end |
#encryption_fields_map ➤ Hash | nada
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o hash do mapa de campo criptografado se fornecido ao criar o cliente.
1229 1230 1231 |
# File 'lib/mongo/ cliente.rb', linha 1229 def encryption_fields_map @encrypted_fields_map ||= @opções.buscar(:auto_encryption_options, {})[:encrypted_fields_map] end |
#get_session(options = {}) ➤ Sessão | nada
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna uma sessão para usar para operações, se possível.
Se a opção :session estiver definida, valida essa sessão e a retorna. Caso contrário, se o sistema suportar sessões, crie uma nova sessão e a retorne. Quando uma nova sessão é criada, a sessão será implícita (o ciclo de vida é gerenciado pelo driver) se a opção :implicit for fornecida, caso contrário, a sessão será explícita (o ciclo de vida gerenciado pelo aplicativo). Se o sistema não suportar sessão, retornará zero.
1173 1174 1175 1176 1177 |
# File 'lib/mongo/ cliente.rb', linha 1173 def get_session( = {}) get_session!() salvar Erro::SessionsNotSupported nada end |
#hash ➤ inteiro
Obtenha o valor de hash do cliente.
216 217 218 |
# File 'lib/mongo/ cliente.rb', linha 216 def hash [ cluster, ].hash end |
#inspecionar ➤ string
Obtenha uma inspeção do cliente como uma string.
706 707 708 |
# File 'lib/mongo/ cliente.rb', linha 706 def inspecionar "#<Mongo::Client:0x#{object_id} cluster=#{cluster.resume}>" end |
#list_databases(filter = {}, name_only = false, opts = {}) ➤ Array<Hash>
Obtenha informações para cada banco de dados.
See https://mongodb.com/pt-br/docs/manual/reference/command/listDatabases/
for more information and usage.
1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 |
# File 'lib/mongo/ cliente.rb', linha 1016 def list_databases(filtro, filtro = {}, name_only = false, opciona = {}) cmd = { bancos de dados de lista: 1 } cmd[:nameOnly] = !!name_only cmd[:filter] = filtro, filtro a menos que filtro, filtro.vazio? cmd[: authorizedDatabases] = true se opciona[: authorized_databases] Usar(Database::ADMIN) .database .read_command(cmd, opciona.mesclar(op_name: 'listDatabases')) .primeiro[Database::Bancos de dados] end |
#list_mongo_databases(filter = {}, opts = {}) ➤ Array <Mongo::Database>
Retorna uma lista de objetos Mongo::Database.
1042 1043 1044 1045 1046 |
# File 'lib/mongo/ cliente.rb', linha 1042 def list_mongo_databases(filtro, filtro = {}, opciona = {}) database_names(filtro, filtro, opciona).coletar fazer |name| Database.Novo(auto, name, ) end end |
#max_read_retry ➤ Inteiro
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Obtenha o número máximo de vezes que o cliente pode tentar novamente uma operação de leitura ao usar novas tentativas de leitura legado .
674 675 676 |
# File 'lib/mongo/ cliente.rb', linha 674 def max_read_retry [:max_read_retry] || cluster::MAX_READ_RETRIES end |
#max_write_retry ➤ Inteiro
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Obtenha o número máximo de vezes que o cliente pode tentar novamente uma operação de gravação ao usar novas tentativas de gravação herdadas.
694 695 696 |
# File 'lib/mongo/ cliente.rb', linha 694 def max_write_retry [:max_write_retry] || cluster::MAX_WRITE_RETRIES end |
#monitoring ⇒ Monitoring
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Monitoramento de retornos O monitoramento.
168 169 170 171 172 173 174 |
# File 'lib/mongo/ cliente.rb', linha 168 def Monitoramento se cluster cluster.Monitoramento mais @monitoring end end |
#read_concern ➤ Hash
Obtenha a preocupação de leitura para este cliente.
890 891 892 |
# File 'lib/mongo/ cliente.rb', linha 890 def read_concern [:read_concern] end |
#read_preference ➤ BSON::Document
Obtenha a preferência de leitura a partir das opções passadas para o cliente.
754 755 756 |
# File 'lib/mongo/ cliente.rb', linha 754 def read_preference @read_preference ||= [:read] end |
#read_retry_interval ➤ Flutuante
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Obtenha o intervalo, em segundos, em que as tentativas de leitura ao usar tentativas de leitura herdadas.
684 685 686 |
# File 'lib/mongo/ cliente.rb', linha 684 def read_retry_interval [:read_retry_interval] || cluster::READ_RETRY_INTERVAL end |
#reconectar ➤ verdadeiro
Reconectar o cliente.
941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 |
# File 'lib/mongo/ cliente.rb', linha 941 def reconectar Endereços = cluster.Endereços.map(&:to_s) @connect_lock.sincronizar fazer começar do_close salvar StandardError nada end @cluster = cluster.Novo(Endereços, Monitoramento, ) build_encrypter se @opções[:auto_encryption_options] @closed = false end true end |
#reset_cluster!(monitoramento: nil) ⇒ Object
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Substitui o cluster deste cliente por uma nova instância criada a partir das opções atuais do cliente. Usado por #with para que um cliente reconfigurado não compartilhe seu cluster com o cliente do qual foi clonado.
874 875 876 877 878 879 880 |
# File 'lib/mongo/ cliente.rb', linha 874 def reset_cluster!(monitoramento: nada) @cluster = cluster.Novo( cluster.Endereços.map(&:to_s), Monitoramento || Monitoramento.Novo, ) end |
#reset_database! ⇒ Object
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Substitui o banco de dados deste cliente por uma nova instância criada a partir das opções atuais do cliente. Usado por #with para que um cliente reconfigurado não compartilhe seu banco de dados com o cliente do qual foi clonado.
862 863 864 |
# File 'lib/mongo/ cliente.rb', linha 862 def reset_database! @database = Database.Novo(auto, [:database], ) end |
#server_selector ➤ Mongo::ServerSelector
Obtenha o seletor de servidor. Ele usa a read preference definida nas opções do cliente ou padroniza para um seletor de servidor Primary.
732 733 734 735 736 737 738 |
# File 'lib/mongo/ cliente.rb', linha 732 def server_selector @server_selector ||= se read_preference ServerSelector.obter(read_preference) mais ServerSelector.Principal end end |
#start_session(options = {}) ➤ Session
Uma Sessão não pode ser usada por vários threads ao mesmo tempo; objetos de sessão não são seguros para threads.
Inicie uma sessão.
Se a implantação não suportar sessões, aumenta Mongo::Error::InvalidSession. Esta exceção também pode ser gerada quando o driver não está conectado a um servidor de obtenção de dados, por exemplo , durante o failover.
1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 |
# File 'lib/mongo/ cliente.rb', linha 1067 def start_session( = {}) session = get_session!(.mesclar(implícito: false)) se block_given? começar rendimento session garantir session.end_session end mais session end end |
#resumo ➤ string
O formato e o layout exatos da string de resumo retornada não fazem parte da API pública do driver e podem ser alterados a qualquer momento.
Obtenha um resumo do estado do cliente.
718 719 720 |
# File 'lib/mongo/ cliente.rb', linha 718 def Resumo "#<Client cluster=#{cluster.resume}>" end |
#timeout_ms ⇒ Integer | nil
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o valor da opção timeout_ms se definido.
1235 1236 1237 |
# File 'lib/mongo/ cliente.rb', linha 1235 def timeout_ms @opções[:timeout_ms] end |
#timeout_sec ⇒ Float | nil
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o valor da opção timeout_ms convertido em segundos.
1241 1242 1243 1244 1245 1246 1247 |
# File 'lib/mongo/ cliente.rb', linha 1241 def timeout_sec se timeout_ms.nada? nada mais timeout_ms / 1_000.0 end end |
#traçar ➤ Rastreamento::Tracer | nada
Obtenha o rastreador configurado para este cliente.
1252 1253 1254 1255 1256 1257 1258 1259 |
# File 'lib/mongo/ cliente.rb', linha 1252 def rastreador rastreamento_opts = @opções[:trasing] || {} @tracer ||= Rastreamento.create_tracer( habilitado: rastreamento_opts[:enabled], query_text_max_long: rastreamento_opts[:query_text_max_longitude], omel_tracer: rastreamento_opts[:tracer] ) end |
#update_options(new_options) ⇒ Hash
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Atualiza as opções deste cliente a partir de new_options, validando todas as opções.
As novas opções podem ser transformadas de acordo com várias regras. O hash final das opções realmente aplicadas ao cliente é retornado.
Se as opções falharem na validação, este método poderá avisar ou gerar uma exceção. Se esse método gerar uma exceção, o cliente deverá ser descartado (da mesma forma que se um construtor levantasse uma exceção).
819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 |
# File 'lib/mongo/ cliente.rb', linha 819 def () = @opções = auto.classe.( || {}) ().toque fazer |opciona| # Nossas opções estão congeladas = @opções.dup .excluir(:write) se [:write] && opciona[:write_concern] .excluir(:write_concern) se [:write_concern] && opciona[:write] .update(opciona) @opções = .congelar = @opções[:auto_encryption_options] != [:auto_encryption_options] # Se houver novas auto_encryption_options, crie um novo criptografador. # Caso contrário, permita que o novo cliente compartilhe um criptografador com o #cliente original. # # Se auto_encryption_options forem nil, defina @encrypter como nil, mas não # feche o criptografador porque ele ainda pode ser usado pelo cliente original . se @opções[:auto_encryption_options] && @connect_lock.sincronizar fazer build_encrypter end elsif @opções[:auto_encryption_options].nada? @connect_lock.sincronizar fazer @encrypter = nada end end end end |
#use(name) ➤ Mongo::Client
O novo cliente compartilha o cluster com o cliente original e, como resultado, também compartilha a instância de monitoramento e os assinantes de eventos de monitoramento.
Cria um novo cliente configurado para utilizar o banco de dados com o nome fornecido e utilizando as outras opções configuradas neste cliente.
773 774 775 |
# File 'lib/mongo/ cliente.rb', linha 773 def Usar(name) com(database: name) end |
#watch(pipeline = [], options = {}) ➤ ChangeStream
Um fluxo de alterações permite apenas a read concern de "maioria".
Este método auxiliar é preferível a executar uma agregação bruta com um estágio $changeStream, com a finalidade de apoiar a capacidade de retomada.
Permite que os usuários solicitem que sejam enviadas notificações para todas as alterações que ocorrem no cluster do cliente.
1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 |
# File 'lib/mongo/ cliente.rb', linha 1142 def assistir(gasoduto = [], = {}) Método Usar(Database::ADMIN).assistir(gasoduto, ) a menos que database.name == Database::ADMIN = .dup [:cursor_type] = :tailable_await se [:max_await_time_ms] mongo::collection::Vista::Change stream.Novo( mongo::collection::Vista.Novo(auto["#{Database::COMMAND}.aggregate"], {}, ), gasoduto, mongo::collection::Vista::Change stream::cluster, ) end |
#com(new_options = nil) ➤ Mongo::Client
Dependendo das opções fornecidas, o cliente retornado pode compartilhar o cluster com o cliente original ou ser criado com um novo cluster. Se um novo cluster for criado, os assinantes de eventos de monitoramento no novo cliente serão definidos para o conjunto de assinantes de eventos padrão e nenhum dos assinantes no cliente original será copiado.
Cria um novo cliente com as opções passadas mescladas sobre as opções existentes deste cliente. Útil para eventos únicos para alterar opções específicas sem alterar o cliente original.
795 796 797 798 799 800 801 802 803 |
# File 'lib/mongo/ cliente.rb', linha 795 def com( = nada) clonar.toque fazer |Cliente| opciona = Cliente.( || Opções::Editado.Novo) Cliente.reset_database! # Não podemos usar o mesmo cluster se algumas opções que o afetariam # foram alterados. Cliente.reset_cluster!(monitoramento: opciona[:monitoring]) se (opciona) end end |
#with_session(opções = {}) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Cria uma sessão para usar para operações, se possível, e a gera para o bloco fornecido.
Se a opção :session estiver definida, valida essa sessão e a utiliza. Caso contrário, se o sistema suportar sessões, crie uma nova sessão e use-a. Quando uma nova sessão é criada, a sessão será implícita (o ciclo de vida é gerenciado pelo driver) se a opção :implicit for fornecida, caso contrário, a sessão será explícita (o ciclo de vida gerenciado pelo aplicativo). Se a implantação não suportar sessão, produz zero para o bloco.
Quando o bloqueio terminar, se a sessão foi criada e foi implícita, ou se uma sessão implícita foi passada, a sessão é encerrada, o que a retorna para o pool de sessões disponíveis.
1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 |
# File 'lib/mongo/ cliente.rb', linha 1199 def with_session( = {}) # RUBY-3174 reativará esta proteção; consulte #assert_not_closed. # assert_not_closed session = get_session() rendimento session garantir session.end_session se session && session.implícito? end |
#write_concern ➤ Mongo::WriteConcern
Obtenha a write concern para esse cliente. Se nenhuma opção tiver sido fornecida, será usada uma confirmação de servidor único padrão.
903 904 905 |
# File 'lib/mongo/ cliente.rb', linha 903 def write_concern @write_concern ||= Escreva preocupação.obter([:write_concern] || [:write]) end |