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.

Desde:

  • 2.0.0

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do atributo da instância

#cursornil | 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.

Retorna:

  • (nil | Cursor)

    O cursor, se houver.

Desde:

  • 2.0.0



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

Observação:

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.

Retorna:

  • (nil)

    Sempre nulo.

Aumenta:

Desde:

  • 2.1.0



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.

Exemplos:

Iterar através do resultado da visualização.

view.each do |document|
  p document
end

Parâmetros de rendimento:

  • Cada (Hash)

    documento correspondente.

Retorna:

  • (Enumerador)

    O enumerador.

Desde:

  • 2.0.0



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, **cache_options)
      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