Classe: Mongo::CashingCursor

Herda:
Cursor
  • Objeto
mostrar tudo
Definido em:
lib/mongo/caching_cursor.rb

Visão geral

Um cursor que tenta carregar documentos da memória primeiro antes de atingir o banco de dados se a mesma query já tiver sido executada.

Recolhimento do Resumo do atributo de instância

Atributos herdados do cursor

#connection, #context, #initial_result, #resume_token, servidor, #view

Recolhimento do Resumo do método de instância

Métodos herdados do Cursor

#batch_size,...

Métodos incluídos no Retryable

#read_worker, #select_server, #with_overload_retry, #write_worker

Detalhes do construtor

Esta classe herda um construtor do Mongo::Cursor

Detalhes do atributo da instância

#cached_docs ➤ Array <BSON::Document> (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 os documentos em cache do cursor.

Retorna:

  • (Array <BSON::Document>)

    Os documentos em cache do cursor.



25
26
27
# Arquivo 'lib/mongo/cashing_cursor.rb', linha 25

def cached_docs
  @cached_docs
end

Detalhes do método de instância

#cada(&bloco) ➤ Objeto

Iteramos sobre os documentos em cache se eles já existirem no cursor, caso contrário, prosseguiremos normalmente.

Exemplos:

Iterar sobre os documentos.

cursor.each do |doc|
  # ...
end


34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Arquivo 'lib/mongo/cashing_cursor.rb', linha 34

def cada(&noum: bloco ; verb: bloquear)
  se @cached_docs
    @cached_docs.cada(&noum: bloco ; verb: bloquear)

    a menos que fechado?
      # A StopIteration gerada por try_next encerra este loop.
      loop fazer
        documento = try_next
        rendimento documento se documento
      end
    end
  mais
    super
  end
end

#inspecionarstring

Obtenha uma representação de string legível por humanos de Cursor.

Exemplos:

Inspecione o cursor.

cursor.inspect

Retorna:

  • (string)

    Uma representação de string de uma instância do Cursor .



56
57
58
# Arquivo 'lib/mongo/cashing_cursor.rb', linha 56

def inspecionar
  "#<Mongo::CashingCursor:0x#{object_id} @view=#{@view.inspect}>"
end

#try_next ➤ 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.

Adquire o próximo documento para iteração do cursor e, em seguida, insere esse documento na array @cached_docs.



64
65
66
67
68
69
70
# Arquivo 'lib/mongo/cashing_cursor.rb', linha 64

def try_next
  @cached_docs ||= []
  documento = super
  @cached_docs << documento se documento

  documento
end