Módulo: Mongo::Collection::View::Iterable
- Incluído em:
- Mongo::Collection::View, Aggregation
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/collection/view/iterable.rb
Visão geral
Define o comportamento relacionado à iteração para visualizações de coleções, incluindo a instanciação do cursor.
Recolhimento do Resumo do atributo de instância
-
#cursor ⇒ nil | Cursor
Somente leitura
privado
Retorna o cursor associado a esta visualização, se houver.
Recolhimento do Resumo do método de instância
-
#close_query ➤ nil (também: #kill_cursors)
Limpa os recursos associados a esta query.
-
#cada {|Cada| ... } ➤ Enumerador
Iterar através de documentos retornados por uma query com este
View
.
Detalhes do atributo da instância
#cursor ⇒ nil | Cursor (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 o cursor associado a esta visualização, se houver.
33 34 35 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/iterable.rb', linha 33 def cursor @cursor end |
Detalhes do método de instância
#close_query ➤ nil Também conhecido como: kill_cursors
Esse método propaga quaisquer erros que ocorrem ao fechar o cursor do lado do servidor.
Limpa os recursos associados a esta query.
Se houver um cursor de servidor associado a esta query, ele será fechado enviando um comando KillCursors para o servidor.
106 107 108 109 110 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/iterable.rb', linha 106 def close_query se @cursor @cursor.Fechar end end |
#cada {|Cada| ... } ➤ Enumerador
Iterar através de documentos retornados por uma query com este View
.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/iterable.rb', linha 47 def cada # Se o cursor de cache estiver fechado e não foi totalmente iterado, # os documentos que temos nele não são o conjunto de resultados completo e # não temos como concluir essa iteração. # Portanto, descarte esse cursor e inicie a iteração novamente. # O caso do cursor de cache não estar fechado e não ter # foi totalmente iterado e não foi testado - consulte RUBY-2773. @cursor = se use_query_cache? && cached_cursor && ( cached_cursor.full_iterated? || !cached_cursor.fechado? ) cached_cursor mais session = Cliente.enviar(:get_session, @opções) select_cursor(session).toque fazer |cursor| se use_query_cache? # Não há necessidade de armazenar o cursor no cache de query se houver # já um cursor em cache armazenado nesta chave. Cache de consulta.set(cursor, **) end end end se use_query_cache? # Se uma query com um limite for executada, o cache de query # reutilizar resultados de uma query anterior com o mesmo ou maior # limite e, em seguida, imponha o limite inferior durante a iteração. limit_for_cached_query = respond_to?(:limit) ? Cache de consulta.normalized_limit(limit) : nada end se block_given? # As versões 2.5 e mais antigas do Ruby não suportam a sintaxe arr[0..nil], então # esta deve ser uma condicional separada. cursor_to_iterate = se limit_for_cached_query @cursor.to_a[0...limit_for_cached_query] mais @cursor end cursor_to_iterate.cada fazer |doc| rendimento doc end mais @cursor.to_enum end end |