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, # 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_connecting, :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, :timeout_ms, :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.
-
#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.
-
#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.
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 |
# File 'lib/mongo/ cliente.rb', linha 502 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] 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.
139 140 141 |
# File 'lib/mongo/ cliente.rb', linha 139 def cluster @cluster end |
#database ➤ Mongo::Database (readonly)
Retorna banco de dados O banco de dados no qual o cliente está operando.
142 143 144 |
# File 'lib/mongo/ cliente.rb', linha 142 def database @database end |
#encrypter ➤ Mongo::Crypt::AutoEncrypter (somente leitura)
Retorna o objeto que encapsula o comportamento de criptografia automática.
149 150 151 |
# File 'lib/mongo/ cliente.rb', linha 149 def criptografador @encrypter end |
#opções ➤ Hash (somente leitura)
Retorna opções As opções de configuração.
145 146 147 |
# File 'lib/mongo/ cliente.rb', linha 145 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.
1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 |
# File 'lib/mongo/ cliente.rb', linha 1162 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.
178 179 180 181 |
# File 'lib/mongo/ cliente.rb', linha 178 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.
195 196 197 |
# File 'lib/mongo/ cliente.rb', linha 195 def [](collection_name, = {}) database[collection_name, ] end |
#close ➤ true
Feche todas as conexões.
865 866 867 868 869 870 871 |
# File 'lib/mongo/ cliente.rb', linha 865 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.
876 877 878 879 880 |
# File 'lib/mongo/ cliente.rb', linha 876 def close_encrypter @encrypter.Fechar se @encrypter true end |
#fechado? ➤ Booleano
856 857 858 |
# File 'lib/mongo/ cliente.rb', linha 856 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.
611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 |
# File 'lib/mongo/ cliente.rb', linha 611 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.
932 933 934 |
# File 'lib/mongo/ cliente.rb', linha 932 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.
1178 1179 1180 |
# File 'lib/mongo/ cliente.rb', linha 1178 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.
1118 1119 1120 1121 1122 |
# File 'lib/mongo/ cliente.rb', linha 1118 def get_session( = {}) get_session!() salvar Erro::SessionsNotSupported nada end |
#hash ➤ inteiro
Obtenha o valor de hash do cliente.
207 208 209 |
# File 'lib/mongo/ cliente.rb', linha 207 def hash [cluster, ].hash end |
#inspecionar ➤ string
Obtenha uma inspeção do cliente como uma string.
674 675 676 |
# File 'lib/mongo/ cliente.rb', linha 674 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.
963 964 965 966 967 968 969 |
# File 'lib/mongo/ cliente.rb', linha 963 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.
986 987 988 989 990 |
# File 'lib/mongo/ cliente.rb', linha 986 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 .
642 643 644 |
# File 'lib/mongo/ cliente.rb', linha 642 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.
662 663 664 |
# File 'lib/mongo/ cliente.rb', linha 662 def max_write_retry [:max_write_retry] || cluster::MAX_WRITE_RETRIES end |
#read_concern ➤ Hash
Obtenha a preocupação de leitura para este cliente.
839 840 841 |
# File 'lib/mongo/ cliente.rb', linha 839 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.
722 723 724 |
# File 'lib/mongo/ cliente.rb', linha 722 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.
652 653 654 |
# File 'lib/mongo/ cliente.rb', linha 652 def read_retry_interval [:read_retry_interval] || cluster::READ_RETRY_INTERVAL end |
#reconectar ➤ verdadeiro
Reconectar o cliente.
890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 |
# File 'lib/mongo/ cliente.rb', linha 890 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.
700 701 702 703 704 705 706 |
# File 'lib/mongo/ cliente.rb', linha 700 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.
1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 |
# File 'lib/mongo/ cliente.rb', linha 1011 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.
686 687 688 |
# File 'lib/mongo/ cliente.rb', linha 686 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.
1184 1185 1186 |
# File 'lib/mongo/ cliente.rb', linha 1184 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.
1190 1191 1192 1193 1194 1195 1196 |
# File 'lib/mongo/ cliente.rb', linha 1190 def timeout_sec se timeout_ms.nada? nada mais timeout_ms / 1_000.0 end 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).
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 |
# File 'lib/mongo/ cliente.rb', linha 789 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.
741 742 743 |
# File 'lib/mongo/ cliente.rb', linha 741 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.
1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 |
# File 'lib/mongo/ cliente.rb', linha 1088 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.
763 764 765 766 767 768 769 770 771 772 773 |
# File 'lib/mongo/ cliente.rb', linha 763 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.
1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 |
# File 'lib/mongo/ cliente.rb', linha 1144 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.
852 853 854 |
# File 'lib/mongo/ cliente.rb', linha 852 def write_concern @write_concern ||= Escreva preocupação.obter([:write_concern] || [:write]) end |