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.
-
#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.
-
#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.
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 |
# File 'lib/mongo/ cliente.rb', linha 526 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.
1177 1178 1179 1180 1181 1182 1183 1184 |
# File 'lib/mongo/ cliente.rb', linha 1177 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.
187 188 189 190 191 |
# File 'lib/mongo/ cliente.rb', linha 187 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.
205 206 207 |
# File 'lib/mongo/ cliente.rb', linha 205 def [](collection_name, = {}) database[collection_name, ] end |
#close ➤ true
Feche todas as conexões.
878 879 880 881 882 883 884 |
# File 'lib/mongo/ cliente.rb', linha 878 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.
889 890 891 892 893 |
# File 'lib/mongo/ cliente.rb', linha 889 def close_encrypter @encrypter.Fechar se @encrypter true end |
#fechado? ➤ Booleano
869 870 871 |
# File 'lib/mongo/ cliente.rb', linha 869 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.
631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 |
# File 'lib/mongo/ cliente.rb', linha 631 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.
947 948 949 |
# File 'lib/mongo/ cliente.rb', linha 947 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.
1191 1192 1193 |
# File 'lib/mongo/ cliente.rb', linha 1191 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.
1135 1136 1137 1138 1139 |
# File 'lib/mongo/ cliente.rb', linha 1135 def get_session( = {}) get_session!() salvar Erro::SessionsNotSupported nada end |
#hash ➤ inteiro
Obtenha o valor de hash do cliente.
217 218 219 |
# File 'lib/mongo/ cliente.rb', linha 217 def hash [ cluster, ].hash end |
#inspecionar ➤ string
Obtenha uma inspeção do cliente como uma string.
693 694 695 |
# File 'lib/mongo/ cliente.rb', linha 693 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.
978 979 980 981 982 983 984 985 986 987 |
# File 'lib/mongo/ cliente.rb', linha 978 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.
1004 1005 1006 1007 1008 |
# File 'lib/mongo/ cliente.rb', linha 1004 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 .
661 662 663 |
# File 'lib/mongo/ cliente.rb', linha 661 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.
681 682 683 |
# File 'lib/mongo/ cliente.rb', linha 681 def max_write_retry [:max_write_retry] || cluster::MAX_WRITE_RETRIES end |
#read_concern ➤ Hash
Obtenha a preocupação de leitura para este cliente.
852 853 854 |
# File 'lib/mongo/ cliente.rb', linha 852 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.
741 742 743 |
# File 'lib/mongo/ cliente.rb', linha 741 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.
671 672 673 |
# File 'lib/mongo/ cliente.rb', linha 671 def read_retry_interval [:read_retry_interval] || cluster::READ_RETRY_INTERVAL end |
#reconectar ➤ verdadeiro
Reconectar o cliente.
903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 |
# File 'lib/mongo/ cliente.rb', linha 903 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 |
#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.
719 720 721 722 723 724 725 |
# File 'lib/mongo/ cliente.rb', linha 719 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.
1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 |
# File 'lib/mongo/ cliente.rb', linha 1029 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.
705 706 707 |
# File 'lib/mongo/ cliente.rb', linha 705 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.
1197 1198 1199 |
# File 'lib/mongo/ cliente.rb', linha 1197 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.
1203 1204 1205 1206 1207 1208 1209 |
# File 'lib/mongo/ cliente.rb', linha 1203 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.
1214 1215 1216 1217 1218 1219 1220 1221 |
# File 'lib/mongo/ cliente.rb', linha 1214 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).
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 |
# File 'lib/mongo/ cliente.rb', linha 806 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.
760 761 762 |
# File 'lib/mongo/ cliente.rb', linha 760 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.
1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 |
# File 'lib/mongo/ cliente.rb', linha 1104 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.
782 783 784 785 786 787 788 789 790 |
# File 'lib/mongo/ cliente.rb', linha 782 def com( = nada) clonar.toque fazer |Cliente| opciona = Cliente.( || Opções::Editado.Novo) Database.criar(Cliente) # Não podemos usar o mesmo cluster se algumas opções que o afetariam # foram alterados. cluster.criar(Cliente, 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.
1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 |
# File 'lib/mongo/ cliente.rb', linha 1161 def with_session( = {}) # TODO: Adicione isto de volta no RUBY-3174. # 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.
865 866 867 |
# File 'lib/mongo/ cliente.rb', linha 865 def write_concern @write_concern ||= Escreva preocupação.obter([:write_concern] || [:write]) end |