Classificação: Mongo::Client
- Herda:
-
Objeto
- Objeto
- Mongo::Client
- Estendido por:
- Encaminhável
- Inclui:
- Logável
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/client.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, # 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 rever # usando o mesmo objeto de cluster com diferentes tempos limite de seleção de servidor. ].congelar
- VALID_OPTIONS =
Opções válidas do cliente.
[ :app_name, :auth_mech, :auth_mech_properties, :auth_source, :auto_encryption_options, :bg_error_backtrace, :cleanup, :compressors, :direct_connection, :connect, :connect_timeout, :database, : heartbeat_frequency, :id_generator, :load_balanced, :local_threshold, :logger, :log_prefix, :max_idle_time, :max_pool_size, :max_read_retry, :max_write_retry, :min_pool_size, :monitoring, :monitoring_io, :password, :platform, :populator_io, :read, :read_concern, :read_retry_interval, :replica_set, :resolv_options, :retry_reads, :retry_writes, :scan, :sdam_proc, :server_api, :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, :truncate_logs, : user, :wait_queue_timeout, :wrapping_libraries, :write, :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.
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.
-
#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
A partir da versão 3.6 do servidor MongoDB, um estágio de pipeline "$changeStream" é suportado no framework de aggregation.
-
#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 = {}, &block) ➤ 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.
489 490 491 492 493 494 495 496 497 498 499 500 501 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 609 610 611 612 613 614 615 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 489 def inicializar(endereços_or_uri, = nada) = ? .dup : {} srv_uri = nada se endereços_or_uri.is_a?(::String) uri = URI.obter(endereços_or_uri, ) se uri.is_a?(URI::Protocolo SRV) # 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 end Endereços = uri.Servidores = uri..dup # Entrega especial para :write e :write_concern: allow cliente Ruby # opções para substituir as opções de URI, mesmo quando a opção Ruby usa a # preterida :write key e a opção URI usa a atual # :write_concern key se [:write] .excluir(:write_concern) end = .mesclar() @srv_records = uri.srv_records mais Endereços = endereços_or_uri Endereços.cada fazer |addr| se addr =~ /\Amongodb(\+srv)?:\/\//i aumentar ArgumentError, "O host '#{addr}' não deve conter protocolo. Você média não usar uma array?" end end @srv_records = nada end = 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] se 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 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] se Hash === default_v v = default_v.mesclar(v) end [k] = v end = .keys.cada fazer |k| se [k].nada? .excluir(k) end end @opções = () =begin Suporte ao objeto WriteConcern se @options[:write_concern].is_a?(WriteConcern::Base) # Armazene a instância em cache para que não a reconstruamos desnecessariamente. @write_concern = @options[:write_concern] @options[:write_concern] = @write_concern.options end =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) se sdam_proc sdam_proc.Chame(auto) end @connect_lock = Mutex.Novo @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 começar @cluster.Fechar salvar => e log_service("Erro ao fechar o cluster no manipulador de exceções do construtor do cliente: #{e.class}: #{e}") # Solte esta exceção para que a exceção original seja gerada end aumentar end se block_given? começar rendimento(auto) garantir Fechar end end end |
Detalhes do atributo da instância
#cluster ➤ Mongo::Cluster (readonly)
Retorna cluster O cluster de servidores para o cliente.
137 138 139 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 137 def cluster @cluster end |
#database ➤ Mongo::Database (readonly)
Retorna banco de dados O banco de dados no qual o cliente está operando.
140 141 142 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 140 def database @database end |
#encrypter ➤ Mongo::Crypt::AutoEncrypter (somente leitura)
Retorna o objeto que encapsula o comportamento de criptografia automática.
147 148 149 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 147 def criptografador @encrypter end |
#opções ➤ Hash (somente leitura)
Retorna opções As opções de configuração.
143 144 145 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 143 def @opções 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.
1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 1161 def () Opções::Editado.Novo(Hash[.map fazer |k, v| se k == :auth_mech_properties || k == 'auth_mech_properties' se v v = Hash[v.map { |pk, pv| [pk.downcase, pv] }] end 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.
176 177 178 179 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 176 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.
193 194 195 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 193 def [](collection_name, = {}) database[collection_name, ] end |
#close ➤ true
Feche todas as conexões.
872 873 874 875 876 877 878 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 872 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.
883 884 885 886 887 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 883 def close_encrypter @encrypter.Fechar se @encrypter true end |
#fechado? ➤ Booleano
863 864 865 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 863 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.
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 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 618 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, valor| 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], ).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. se cluster .update(srv_uri: cluster.[:srv_uri]) end end end |
#database_names(filter = {}, opts = {}) ➤ Array<String>
Obtenha os nomes de todos os bancos de dados.
936 937 938 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 936 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.
1177 1178 1179 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 1177 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.
1117 1118 1119 1120 1121 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 1117 def get_session( = {}) get_session!() salvar Erro::SessionsNotSupported nada end |
#hash ➤ inteiro
Obtenha o valor de hash do cliente.
205 206 207 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 205 def hash [cluster, ].hash end |
#inspecionar ➤ string
Obtenha uma inspeção do cliente como uma string.
681 682 683 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 681 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.
962 963 964 965 966 967 968 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 962 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).primeiro[Database::Bancos de dados] end |
#list_mongo_databases(filter = {}, opts = {}) ➤ Array <Mongo::Database>
Retorna uma lista de objetos Mongo::Database.
985 986 987 988 989 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 985 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 .
649 650 651 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 649 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.
669 670 671 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 669 def max_write_retry [:max_write_retry] || cluster::MAX_WRITE_RETRIES end |
#read_concern ➤ Hash
Obtenha a preocupação de leitura para este cliente.
846 847 848 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 846 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.
729 730 731 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 729 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.
659 660 661 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 659 def read_retry_interval [:read_retry_interval] || cluster::READ_RETRY_INTERVAL end |
#reconectar ➤ verdadeiro
Reconectar o cliente.
897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 897 def reconectar Endereços = cluster.Endereços.map(&:to_s) @connect_lock.sincronizar fazer do_close salvar nada @cluster = cluster.Novo(Endereços, Monitoramento, ) se @opções[:auto_encryption_options] build_encrypter end @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.
707 708 709 710 711 712 713 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 707 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.
1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 1010 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.
693 694 695 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 693 def Resumo "#<Client cluster=#{cluster.resume}>" 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).
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 830 831 832 833 834 835 836 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 796 def () = @opções = auto.classe.( || {}) ().toque fazer |opciona| # Nossas opções estão congeladas = @opções.dup se [:write] && opciona[:write_concern] .excluir(:write) end se [:write_concern] && opciona[:write] .excluir(:write_concern) end .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.
748 749 750 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 748 def Usar(name) com(database: name) end |
#watch(pipeline = [], options = {}) ➤ ChangeStream
Um change stream permite apenas a preocupação de leitura 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.
A partir da versão 3.6 do servidor MongoDB, um estágio de pipeline "$changeStream" é suportado no framework de aggregation. A partir da versão 4.0, esse estágio permite que os usuários solicitem que as notificações sejam enviadas para todas as alterações que ocorrem no cluster do cliente.
1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 1087 def assistir(gasoduto = [], = {}) Método Usar(Database::ADMIN).assistir(gasoduto, ) a menos que database.name == Database::ADMIN = .dup [:await_data] = true 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.
770 771 772 773 774 775 776 777 778 779 780 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 770 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. se (opciona) cluster.criar(Cliente, monitoramento: opciona[:monitoring]) end end end |
#with_session(opções = {}, &block) ➤ 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.
1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 1143 def with_session( = {}, &noum: bloco ; verb: bloquear) # TODO: Adicione isto de volta no RUBY-3174. # assert_not_closed session = get_session() rendimento session garantir se session && session.implícito? session.end_session end 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.
859 860 861 |
# File 'build/ruby-driver-v2.19/lib/mongo/client.rb', linha 859 def write_concern @write_concern ||= Escreva preocupação.obter([:write_concern] || [:write]) end |