Módulo: Mongo::colección::View::Iterable

Incluye:
Mongo::CursorHost
Incluido en:
Mongo::colección::View, agregación::Behavior
Definido en:
lib/mongo/colección/view/iterable.rb

Overview

Define el comportamiento relacionado con la iteración para las vistas de colección, incluida la creación de instancias de cursor.

Desde:

  • 2.0.0

Resumen del atributo de la instancia

Atributos incluidos de Mongo::CursorHost

#cursor, #timeout_mode

Resumen del método de instancia colapsar

Métodos incluidos de Mongo::CursorHost

#validate_timeout_mode!

Detalles del método de instancia

#close_querynil También conocido como: kill_cursors

Nota:

Este método propaga cualquier error que ocurra al cerrar el cursor del lado del servidor.

Limpia los recursos asociados con esta query.

Si hay un cursor de servidor asociado a esta query, se cierra enviando un comando KillCursors al servidor.

Devuelve:

  • (nil)

    Siempre nulo.

Aumenta:

  • (Error::OperationFailure::Family)

    Si falla el cierre del cursor del servidor.

Desde:

  • 2.1.0



72
73
74
75
76
# Archivo 'lib/mongo/colección/view/iterable.rb', línea 72

def close_query
  return a menos que @cursor

  @cursor.Cerrar
end

#each {|Each| ... } ⇒ Enumerator

Itera en los documentos devueltos por una query con este View.

Ejemplos:

Itera a través del resultado de la vista.

view.each do |document|
  p document
end

Parámetros de rendimiento:

  • Cada uno (encriptada)

    documento coincidente.

Devuelve:

  • (Enumerator)

    El enumerador.

Desde:

  • 2.0.0



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Archivo 'lib/mongo/colección/view/iterable.rb', línea 41

def cada(&bloque)
  @cursor = prefer_cached_cursor? ? cached_cursor : nuevo_cursor_para_iteración
  return @cursor.to_enum a menos que ¿block_given?

  límite_para_consulta_en caché = compute_limit_for_cached_query

  # POR HACER: en lugar de extraer todo el conjunto de resultados (limitados) en
  # memoria, esto debería informar al cursor sobre el límite y luego dejar
  # el cursor limita la iteración según sea necesario.
  cursor_to_iterate = si límite_para_consulta_en caché
                        @cursor.to_a[0...límite_para_consulta_en caché]
                      else
                        @cursor
                      end

  cursor_to_iterate.cada(&bloque)
end