Classificação: Mongo::Banco de dados
- Herda:
-
Objeto
- Objeto
- Mongo::Banco de dados
- Estendido por:
- Encaminhável
- Inclui:
- Repetitivo
- Definido em:
- lib/mongo/database.rb,
lib/mongo/database/view.rb,
lib/mongo/database/cursor_command_view.rb
Visão geral
Representa um banco de dados de dados no servidor db e as operações que podem ser executadas nele nesse nível.
Definido sob namespace
Classes: CursorCommandView, View
Colapsode resumo constante
- ADMIN =
O nome do banco de dados admin .
'admin'- COMMAND =
A "coleção" contra a qual os comandos do banco de dados operam.
'$cmd'- DEFAULT_OPTIONS =
As opções de banco de dados de dados padrão.
Opções::Editado.Novo(database: ADMIN).congelar
- NOME =
Obsoleto.
Constante do campo de nome do banco de dados.
'name'- BANCO DE DADOS =
Bancos de dados constantes.
'databases'- namespaces =
O nome da collection que contém todos os nomes de collections.
'system.namespaces'
Recolhimento do Resumo do atributo de instância
-
#client ⇒ Client
Somente leitura
Cliente O cliente do banco de dados de dados .
-
#name ➤ string
Somente leitura
Nome O nome do banco de banco de dados.
-
#opções ➤ Hash
Somente leitura
Opções As opções.
Recolhimento do Resumo do método de instância
-
#==(outro) ➤ verdadeiro, falso
Verifique a igualdade do objeto de banco de dados de dados em relação a outro.
-
#[](collection_name, options = {}) ➤ Mongo::Collection (também: #collection)
Obtenha uma coleção neste banco de dados de dados pelo nome fornecido.
-
#aggregation(pipeline, options = {}) ➤ Collection::View::aggregation
Execute uma agregação no banco de banco de dados.
-
#cluster ⇒ Mongo::Server
Obtenha o servidor primário do cluster.
-
#collection_names(opções = {}) ➤ Array<String>
Obtenha todos os nomes das coleções que não são do sistema no banco de banco de dados.
-
#collections(options = {{}) ➤ Array<Mongo::Collection>
Obtenha todas as collections que não são do sistema que pertencem a este banco de dados de dados.
-
#command(operation, opts = {}) ➤ Mongo::Operation::Result
Executar um comando no banco de dados.
-
#cursor_command(command, options = {}) ⇒ Mongo::Cursor
Execute um comando que retorna um cursor e analise a resposta como um cursor.
-
#descartar(opções = {}) ➤ Resultado
Solte o banco de dados de dados e todas as suas informações associadas.
-
#fs(opções = {}) ➤ Grade::FSBucket
Obtenha o "sistema de arquivos" do Grid para este banco de dados.
-
#inicializar(cliente, nome, opções = {}) ➤ Banco de Dados
construtor
Instancie um novo objeto de banco de dados de dados .
-
#inspecionar ➤ string
Obtenha uma inspeção de string bem impressa para o banco de dados.
-
#list_collections(options = {}) ➤ Array<Hash>
Obtenha informações sobre todas as collections que não são do sistema no banco de dados.
-
#operation_timeouts(opts) ➤ Hash
privado
Valor de timeout_ms definido no nível de operação (se houver) e/ou timeout_ms definido no nível de coleção/ banco de dados/ cliente (se houver).
-
#read_command(operation, opts = {}) ➤ Hash
privado
Execute um comando de leitura no banco de banco de dados, tentando novamente a leitura, se necessário.
-
#timeout_ms ⇒ Integer | nil
privado
Tempo limite de operação para esse banco de dados ou para o cliente correspondente .
-
#usuários ➤ Visualizar::Usuário
Obtenha a visualização do usuário para este banco de dados de dados .
-
#watch(pipeline = [], options = {}) ➤ ChangeStream
Permite que os usuários solicitem o envio de notificações para todas as alterações que ocorram no banco de dados do cliente.
Métodos incluídos no Retryable
#read_worker, #select_server, #with_overload_retry, #write_worker
Detalhes do construtor
#inicializar(cliente, nome, opções = {}) ➤ Banco de Dados
Instancie um novo objeto de banco de dados de dados .
479 480 481 482 483 484 485 486 487 488 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 479 def inicializar(Cliente, name, = {}) aumentar Erro::InvalidDatabaseName.Novo a menos que name se Lint.habilitado? && !(name.is_a?(String) || name.is_a?(Símbolo)) aumentar "O nome do banco de dados deve ser uma string ou um símbolo: #{name}" end @cliente = Cliente @name = name.to_s.congelar @opções = .congelar end |
Detalhes do atributo da instância
#cliente ➤ Cliente (somente leitura)
Retorna cliente O cliente do banco de dados de dados.
61 62 63 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 61 def Cliente @cliente end |
#name ➤ string (somente leitura)
Retorna name O nome do banco de banco de dados.
64 65 66 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 64 def name @name end |
#opções ➤ Hash (somente leitura)
Retorna as opções As opções.
67 68 69 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 67 def @opções end |
Detalhes do método de instância
#==(outro) ➤ true, false
Verifique a igualdade do objeto de banco de dados de dados em relação a outro. Simplesmente verificará se os nomes são os mesmos.
94 95 96 97 98 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 94 def ==(Outro) Método false a menos que Outro.is_a?(Database) name == Outro.name end |
#[](collection_name, options = {}) ➤ Mongo::Collection Também conhecido como: collection
Obtenha uma coleção neste banco de dados de dados pelo nome fornecido.
111 112 113 114 115 116 117 118 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 111 def [](collection_name, = {}) se [:server_api] aumentar ArgumentError, 'A opção :server_api não pode ser especificada para objetos de coleção. Só pode ser especificado no nível do cliente' end collection.Novo(auto, collection_name, ) end |
#aggregation(pipeline, options = {}) ➤ Collection::View::aggregation
Execute uma agregação no banco de banco de dados.
568 569 570 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 568 def Agregação(gasoduto, = {}) Vista.Novo(auto, ).Agregação(gasoduto, ) end |
#cluster ⇒ Mongo::Server
Retorna Obter o servidor primário do cluster.
80 81 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 80 def_delegators :cluster, :next_primary |
#collection_names(opções = {}) ➤ Array<String>
O conjunto de nomes de collection retornados depende da versão do servidor MongoDB que atende à solicitação.
Obtenha todos os nomes das coleções que não são do sistema no banco de banco de dados.
See https://mongodb.com/pt-br/docs/manual/reference/command/listCollections/
for more information and usage.
145 146 147 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 145 def collection_names( = {}) Vista.Novo(auto, ).collection_names() end |
#collections(options = {}) ➤ Array
O conjunto de collections retornadas depende da versão do servidor MongoDB que atende à solicitação.
Obtenha todas as collections que não são do sistema que pertencem a este banco de dados de dados.
See https://mongodb.com/pt-br/docs/manual/reference/command/listCollections/
for more information and usage.
206 207 208 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 206 def collections( = {}) collection_names().map { |name| collection(name) } end |
#command(operation, opts = {}) ➤ Mongo::Operation::Result
Executar um comando no banco de dados.
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 232 def comando(operação, opciona = {}) opciona = opciona.dup execution_opts = opciona.excluir(:execution_options) || {} txn_read_pref = (opciona[:session].txn_read_preference se opciona[:session] && opciona[:session].in_transaction?) txn_read_pref ||= opciona[:read] || ServerSelector::Primário Lint.validate_subscore_read_preference(txn_read_pref) seletor = ServerSelector.obter(txn_read_pref) Cliente.with_session(opciona) fazer |session| Contexto = (operação)::Contexto.Novo( cliente: Cliente, sessão: session, operation_timeouts: operation_timeouts(opciona) ) op = (operação)::Comando.Novo( seletor: operação, db_name: name, ler: seletor, sessão: session ) retry_enabled = Cliente.[:retry_reads] != false && Cliente.[:retry_writes] != false with_overload_retry(contexto: Contexto, retry_enabled: retry_enabled) fazer Servidor = seletor.select_server(cluster, nada, session) op.executar, executar(Servidor, contexto: Contexto, opções: execution_opts) end end end |
#cursor_command(comando, opções = {}) ⇒ Mongo::cursor
Execute um comando que retorna um cursor e analise a resposta como um cursor.
O comando é enviado ao servidor sem modificações; o driver NÃO DEVE inspecioná-lo ou alterá-lo. Se a resposta não contiver um campo de cursor, um erro será gerado. O comando nunca é repetido.
Observação: se um campo maxTimeMS já estiver definido no documento de comando, ele será mantido como está. A opção max_time_ms abaixo aplica-se apenas aos comandos getMore. Definir timeout_ms e max_time_ms não é compatível e tem comportamento indefinido.
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 301 def cursor_command(comando, = {}) = .dup execution_opts = .excluir(:execution_options) || {} = () txn_read_pref = ([:session].txn_read_preference se [:session] && [:session].in_transaction?) txn_read_pref ||= [:read] || ServerSelector::Primário Lint.validate_subscore_read_preference(txn_read_pref) seletor = ServerSelector.obter(txn_read_pref) # A sessão não é intencionalmente encapsulada em #with_session: um implícito # a sessão deve sobreviver a este método e é encerrada pelo cursor quando é # esgotado ou fechado. Até que o cursor assuma a propriedade, a sessão e # qualquer conexão com balanceamento de carga é limpa aqui em cada caminho de saída. session = Cliente.get_session() Contexto = (operação)::Contexto.Novo( cliente: Cliente, sessão: session, operation_timeouts: operation_timeouts() ) op = (operação)::CursorCommand.Novo( seletor: comando, db_name: name, ler: seletor, sessão: session ) # De acordo com a especificação de contrapressão do cliente, repetir um comando genérico em # sobrecarregar erros requer leituras e gravações repetíveis para ser # ativado, o mesmo que Database#command. retry_enabled = Cliente.[:retry_reads] != false && Cliente.[:retry_writes] != false Servidor = nada Conexão = nada cursor = nada começar Resultado = with_overload_retry(contexto: Contexto, retry_enabled: retry_enabled) fazer Servidor = seletor.select_server(cluster, nada, session) se Servidor.load_balancer? # A conexão é verificada pelo cursor quando ele é drenado. Conexão = check_out_cursor_command_connection(Servidor, Contexto) começar op.execute_with_connection(Conexão, contexto: Contexto, opções: execution_opts) salvar StandardError # Libere a conexão antes que o erro se propague para que # uma tentativa repetida verifica um novo. Conexão.connection_pool.check_in(Conexão) a menos que Conexão.fixado? Conexão = nada aumentar end mais op.executar, executar(Servidor, contexto: Contexto, opções: execution_opts) end end a menos que Resultado.cursor? aumentar Erro::InvalidCursorOperation, 'A resposta do comando não incluiu um cursor. ' \ 'Use o comando de banco de dados para comandos que não retornam um cursor.' end view = CursorCommandView.new(self, ) cursor = Cursor.new(view, result, servidor, session: session, context: context) ensure # Se o cursor foi criado, ele é o proprietário da sessão e da conexão; # caso contrário (erro ou nenhum cursor na resposta), libere-os aqui. unless cursor connection.connection_pool.check_in(connection) if connection && !connection.pinned? session.end_session if session && session.implicit? end end cursor end |
#descartar(opções = {}) ➤ Resultado
Solte o banco de dados de dados e todas as suas informações associadas.
439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 439 def derrubar( = {}) operação = { dropDatabase: 1 } Cliente.with_session() fazer |session| write_concern = se [:write_concern] Escreva preocupação.obter([:write_concern]) mais auto.write_concern end (operação)::Descartar banco de dados.Novo({ seletor: operação, db_name: name, write_concern: write_concern, sessão: session }).executar, executar( próximo_primary(nada, session), contexto: (operação)::Contexto.Novo( cliente: Cliente, sessão: session, operation_timeouts: operation_timeouts() ) ) end end |
#fs(options = {}) ⇒ Grid::FSBucket
Obtenha o "sistema de arquivos" do Grid para este banco de dados.
522 523 524 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 522 def fs( = {}) Grade::FSBucket.Novo(auto, ) end |
#inspecionar ➤ string
Obtenha uma inspeção de string bem impressa para o banco de dados.
498 499 500 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 498 def inspecionar "#<Mongo::Database:0x#{object_id} name=#{name}>" end |
#list_collections(options = {}) ➤ Array<Hash>
O conjunto de coleções retornadas e o esquema do hash de informações por coleção depende da versão do servidor MongoDB que atende à solicitação.
Obtenha informações sobre todas as collections que não são do sistema no banco de dados.
See https://mongodb.com/pt-br/docs/manual/reference/command/listCollections/
for more information and usage.
178 179 180 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 178 def list_collections( = {}) Vista.Novo(auto, ).list_collections() end |
#operation_timeouts(opts) ➤ 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.
Retorna o valor de timeout_ms definido no nível de operação (se houver) e/ou timeout_ms definido no nível de coleção/ banco de dados/ cliente (se houver).
659 660 661 662 663 664 665 666 667 668 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 659 def operation_timeouts(opciona) # TODO: Devemos reavaliar se precisamos de dois tempos limite separadamente. {}.toque fazer |Resultado| se opciona[:timeout_ms].nada? Resultado[:inherited_timeout_ms] = timeout_ms mais Resultado[:operation_timeout_ms] = opciona.excluir(:timeout_ms) end end end |
#read_command(operation, opts = {}) ➤ 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.
Execute um comando de leitura no banco de banco de dados, tentando novamente a leitura, se necessário.
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 394 def read_command(operação, opciona = {}) txn_read_pref = (opciona[:session].txn_read_preference se opciona[:session] && opciona[:session].in_transaction?) txn_read_pref ||= opciona[:read] || ServerSelector::Primário Lint.validate_subscore_read_preference(txn_read_pref) preferência = ServerSelector.obter(txn_read_pref) Cliente.with_session(opciona) fazer |session| Contexto = (operação)::Contexto.Novo( cliente: Cliente, sessão: session, operation_timeouts: operation_timeouts(opciona) ) operação = (operação)::Comando.Novo( seletor: operação.dup, db_name: name, ler: preferência, sessão: session, comment: opciona[:comentário] ) op_name = opciona[:op_name] || 'Comando' rastreador.rastreamento_operação(operação, Contexto, op_name: op_name) fazer read_with_retry(session, preferência, Contexto) fazer |Servidor| operação.executar, executar(Servidor, contexto: Contexto) end end end 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 tempo limite da operação que é para esse banco de dados ou para o cliente correspondente.
651 652 653 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 651 def timeout_ms [:timeout_ms] || Cliente.timeout_ms end |
#usuários ➤ Visualizar::Usuário
Obtenha a visualização do usuário para este banco de dados de dados .
534 535 536 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 534 def Usuários auth::Usuário::Vista.Novo(auto) 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 o envio de notificações para todas as alterações que ocorram no banco de dados do cliente.
635 636 637 638 639 640 641 642 643 644 645 |
# Arquivo 'lib/mongo/ banco de dados.rb', linha 635 def assistir(gasoduto = [], = {}) = .dup [:cursor_type] = :tailable_await se [:max_await_time_ms] mongo::collection::Vista::Change stream.Novo( mongo::collection::Vista.Novo(collection("#{COMMAND}.aggregate"), {}, ), gasoduto, mongo::collection::Vista::Change stream::Banco de dados, ) end |