Classe: Mongoide::Contextual::Memory

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Enumerável, Associação::EagerLoadable, Aggregable::Memory, Queryable, Posicional
Definido em:
lib/mongoid/contextual/memory.rb

Visão geral

objeto de contexto usado para executar query em massa e operações de persistência em documentos que foram carregados na memória do aplicação . A interface do método desta classe é consistente com Mongoid::Contextual::Mongo.

Recolhimento do Resumo do atributo de instância

Atributos incluídos no Queryable

#collection, #collection A collection na qual fazer query., #criteria, #criteria Os critérios para o contexto., #klass, #klass O klass para os critérios.

Recolhimento do Resumo do método de instância

Métodos incluídos no Posicional

#positionalmente

Métodos incluídos do Queryable

#blank?

Métodos incluídos de Associação::EagerLoadable

#create_pipeline, #eager_load, #eager_load_with_lookup, #eager_loadable?, #preload, #preload_for_lookup, #switch_local_and_foreign_fields?

Métodos incluídos do Aggregable::Memory

#aggregates, #avg, #max, #min, #sum

Detalhes do construtor

#inicializar(critérios) ➤ Memória

Criar o novo no contexto da memória.

Exemplos:

Crie o novo contexto.

Memory.new(criteria)

Parâmetros:



175
176
177
178
179
180
181
182
183
184
# File 'lib/mongoid/contextual/memory.rb', linha 175

def inicializar(critério)
  @criteria, @klass = critério, critério.classe
  @documents = critério.documentos.selecione fazer |doc|
    @root ||= doc._root
    @collection ||= Raiz.collection
    doc._matches?(critério.seletor)
  end
  apply_sorting
  apply_options
end

Detalhes do atributo da instância

#documents Objeto (somente leitura)

Retorna o valor dos documentos de atributo.



23
24
25
# File 'lib/mongoid/contextual/memory.rb', linha 23

def documentos
  @documents
end

#correspondente aos documentos na memória que correspondem ao seletor.(O) ➤ Objeto (somente leitura)



23
# File 'lib/mongoid/contextual/memory.rb', linha 23

attr_reader :documents, :path, :root, :selector

#caminhoObjeto (somente leitura)

Retorna o valor do caminho do atributo.



23
24
25
# File 'lib/mongoid/contextual/memory.rb', linha 23

def caminho
  @path
end

#caminho O caminho atômico.(Theatomicpath.) ➤ Objeto (somente leitura)



23
# File 'lib/mongoid/contextual/memory.rb', linha 23

attr_reader :documents, :path, :root, :selector

#rootObject (somente leitura)

Retorna o valor da raiz do atributo.



23
24
25
# File 'lib/mongoid/contextual/memory.rb', linha 23

def Raiz
  @root
end

#root O documento raiz.(Documento raiz.) ➤ Objeto (somente leitura)



23
# File 'lib/mongoid/contextual/memory.rb', linha 23

attr_reader :documents, :path, :root, :selector

#seletorObjeto (somente leitura)

Retorna o valor do seletor de atributo.



23
24
25
# File 'lib/mongoid/contextual/memory.rb', linha 23

def seletor
  @selector
end

#selector O seletor de documento raiz.(Seletor de documentos raiz.) ➤ Objeto (somente leitura)



23
# File 'lib/mongoid/contextual/memory.rb', linha 23

attr_reader :documents, :path, :root, :selector

Detalhes do método de instância

#==(outro) ➤ verdadeiro | false

Verifique se o contexto é igual ao outro objeto.

Exemplos:

Verifique a igualdade.

context == []

Parâmetros:

  • Outro (Array)

    A outra array.

Retorna:

  • (verdadeiro | falso)

    Se os objetos forem iguais.



33
34
35
36
37
# File 'lib/mongoid/contextual/memory.rb', linha 33

def ==(Outro)
  Método false a menos que Outro.respond_to?(:entries)

  entradas == Outro.entradas
end

#deletenil Também conhecido como: delete_all

Exclua todos os documentos no banco de dados que correspondam ao seletor.

Exemplos:

Exclua todos os documentos.

context.delete

Retorna:

  • (nil)

    Nil.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/mongoid/contextual/memory.rb', linha 45

def excluir
  Excluído = contar
  Removed = map fazer |doc|
    prepare_remove(doc)
    doc.enviar(:as_attributes)
  end
  a menos que Removed.vazio?
    collection.find(seletor).update_one(
      posicionalmente(seletor, '$pullAll' => { caminho => Removed }),
      sessão: _session
    )
  end
  Excluído
end

#Destruirnil Também conhecido como: Destruir_all

Destrua todos os documentos no banco de banco de dados que correspondam ao seletor.

Exemplos:

Destruir todos os documentos.

context.destroy

Retorna:

  • (nil)

    Nil.



67
68
69
70
71
72
73
74
# File 'lib/mongoid/contextual/memory.rb', linha 67

def destruir
  Excluído = contar
  cada fazer |doc|
    documentos.delete_one(doc)
    doc.destruir
  end
  Excluído
end

#distinct(campo) ➤ Array<Object>

Obtenha os valores distintos no banco de dados para o campo fornecido .

Exemplos:

Obtenha os valores distintos.

context.distinct(:name)

Parâmetros:

  • Campo (string | Símbolo)

    O nome do campo.

Retorna:

  • (Array<Object>)

    Os valores distintos para o campo .



85
86
87
# File 'lib/mongoid/contextual/memory.rb', linha 85

def distinto(Campo)
  raspar(Campo).uniq
end

#cada(&bloco) ➤ Enumerador

Iterar sobre o contexto. Se for fornecido um bloco, produza um documento Mongoid para cada um, caso contrário, retorne um enumeração.

Exemplos:

Iterar sobre o contexto.

context.each do |doc|
  puts doc.name
end

Retorna:

  • (Enumerador)

    O enumerador.



98
99
100
101
102
103
104
105
# File 'lib/mongoid/contextual/memory.rb', linha 98

def cada(&noum: bloco ; verb: bloquear)
  se block_given?
    documents_for_iteration.cada(&noum: bloco ; verb: bloquear)
    auto
  mais
    to_enum
  end
end

#existe?(id_or_ conditions = :none) ➤ true | false

Existem documentos para o contexto.

Exemplos:

Existem documentos para o contexto.

context.exists?

Existe algum documento para determinado _id.

context.exists?(BSON::ObjectId(...))

Existem documentos para determinadas condições.

context.exists?(name: "...")

Parâmetros:

  • id_or_ conditions (Hash | Objeto | falso) (padrão para: :none)

    um _id para pesquisar, um hash de condições, nil ou false.

Retorna:

  • (verdadeiro | falso)

    Se a contagem for superior a zero. Sempre falso se passado como nulo ou falso.



123
124
125
126
127
128
129
130
# File 'lib/mongoid/contextual/memory.rb', linha 123

def existe?(id_or_ conditions = : none)
  caso id_or_ conditions
  quando : none então algum?
  quando nada, false então false
  quando Hash então Memória.Novo(critério.ONDE(id_or_ conditions)).existe?
  mais Memória.Novo(critério.ONDE(_id: id_or_ conditions)).existe?
  end
end

#quintoDocumento

Obtenha o quinto document no banco de dados para o seletor de critérios.

Exemplos:

Obtenha o quinto documento.

context.fifth

Retorna:



456
457
458
# File 'lib/mongoid/contextual/memory.rb', linha 456

def quinto
  modified_load([ documentos.quinto ]).primeiro
end

#quinto!Documento

Obtenha o quinto document no banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o quinto documento.

context.fifth!

Retorna:

Aumenta:



470
471
472
# File 'lib/mongoid/contextual/memory.rb', linha 470

def quinto!
  quinto || create_document_not_Found_error
end

#first(limit = nil) undação do documento Também conhecido como: um, find_first

Obtenha o primeiro document no banco de dados para o seletor dos critérios.

Exemplos:

Obtenha o primeiro documento.

context.first

Parâmetros:

  • limit (Inteiro) (padrão para: nil)

    O número de documentos a retornar.

Retorna:



140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/mongoid/contextual/memory.rb', linha 140

def primeiro(limit = nada)
  use_first = limit.nada?
  limit ||= 1
  se critério.use_lookup?
    @criteria = critério.limit(limit)
    Resultado = ans_load_with_lookup
  mais
    Resultado = modified_load(documentos.primeiro(limit))
  end

  use_first ? Resultado.primeiro : Resultado
end

#primeiro!Documento

Obtenha o primeiro document no banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o primeiro documento.

context.first!

Retorna:

Aumenta:



165
166
167
# File 'lib/mongoid/contextual/memory.rb', linha 165

def primeiro!
  primeiro || create_document_not_Found_error
end

#quartoDocumento

Obtenha o quarto document no banco de dados para o seletor dos critérios.

Exemplos:

Obtenha o quarto documento.

context.fourth

Retorna:



432
433
434
# File 'lib/mongoid/contextual/memory.rb', linha 432

def quarto
  modified_load([ documentos.quarto ]).primeiro
end

#quarto!Documento

Obtenha o quarto document no banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o quarto documento.

context.fourth!

Retorna:

Aumenta:



446
447
448
# File 'lib/mongoid/contextual/memory.rb', linha 446

def quarto!
  quarto || create_document_not_Found_error
end

#inc(incs) ➤ Enumerador

Incrementar um valor em todos os documentos.

Exemplos:

Execute o incremento.

context.inc(likes: 10)

Parâmetros:

  • incs (Hash)

    As operações.

Retorna:

  • (Enumerador)

    O enumerador.



194
195
196
197
198
# File 'lib/mongoid/contextual/memory.rb', linha 194

def inc(incs)
  cada fazer |documento|
    documento.inc(incs)
  end
end

#last(limit = nil) ⇒ Document

Obtenha o último document no banco de dados para o seletor dos critérios.

Exemplos:

Obtenha o último documento.

context.last

Parâmetros:

  • limit (Inteiro) (padrão para: nil)

    O número de documentos a retornar.

Retorna:



208
209
210
211
212
213
214
# File 'lib/mongoid/contextual/memory.rb', linha 208

def último(limit = nada)
  se limit
    modified_load(documentos.último(limit))
  mais
    modified_load([ documentos.último ]).primeiro
  end
end

#último!Documento

Obtenha o último document no banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o último documento.

context.last!

Retorna:

Aumenta:



226
227
228
# File 'lib/mongoid/contextual/memory.rb', linha 226

def último!
  último || create_document_not_Found_error
end

#comprimentoInteiro Também conhecido como: tamanho

Obtenha o comprimento dos documentos correspondentes no contexto.

Exemplos:

Obtenha o comprimento dos documentos correspondentes.

context.length

Retorna:

  • (Inteiro)

    O comprimento correspondente.



236
237
238
# File 'lib/mongoid/contextual/memory.rb', linha 236

def Tamanho
  documentos.Tamanho
end

#limite(valor) ➤ Memória

Limita o número de documentos devolvidos.

Exemplos:

Limite os documentos.

context.limit(20)

Parâmetros:

  • valor (Inteiro)

    O número de documentos a retornar.

Retorna:



249
250
251
252
# File 'lib/mongoid/contextual/memory.rb', linha 249

def limit(valor)
  auto.limitante = valor
  auto
end

#pick(*fields) ➤ Objeto | Array<Object>

Escolha os valores de campo na memória.

Exemplos:

Obtém os valores na memória.

context.pick(:name)

Parâmetros:

  • *fields ([ string | Símbolo ]...)

    Campo(s) a ser escolhido(s).

Retorna:

  • (Object | Array<Object>)

    Os valores escolhidos.



276
277
278
279
280
# File 'lib/mongoid/contextual/memory.rb', linha 276

def escolher(*Campos)
  Método a menos que doc = documentos.primeiro

  shard_from_doc(doc, *Campos)
end

#pluck(*fields) ➤ Array<Object> | Array <Array<Object>>

Arranca os valores de campo na memória.

Exemplos:

Obtém os valores na memória.

context.pluck(:name)

Parâmetros:

  • *fields ([ string | Símbolo ]...)

    Campo(s) para extrair.

Retorna:

  • (Array<Object> | Array <Array<Object>>)

    Os valores colhidos.



262
263
264
265
266
# File 'lib/mongoid/contextual/memory.rb', linha 262

def raspar(*Campos)
  documentos.map fazer |doc|
    shard_from_doc(doc, *Campos)
  end
end

#segundoDocumento

Obtenha o segundo document no banco de dados para o seletor dos critérios.

Exemplos:

Obtenha o segundo documento.

context.second

Retorna:



384
385
386
# File 'lib/mongoid/contextual/memory.rb', linha 384

def Segundo
  modified_load([ documentos.Segundo ]).primeiro
end

#segundo!Documento

Obtenha o segundo document no banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o segundo documento.

context.second!

Retorna:

Aumenta:



398
399
400
# File 'lib/mongoid/contextual/memory.rb', linha 398

def segundo!
  Segundo || create_document_not_Found_error
end

#secondary_to_last ➤ Documento

Obtenha o penúltimo document no banco de dados para o seletor de critérios.

Exemplos:

Obtenha o penúltimo documento.

context.second_to_last

Retorna:



480
481
482
# File 'lib/mongoid/contextual/memory.rb', linha 480

def segundo_to_last
  modified_load([ documentos.segundo_to_last ]).primeiro
end

#segundo_para_último!Documento

Obtenha o penúltimo document no banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o penúltimo documento.

context.second_to_last!

Retorna:

Aumenta:



494
495
496
# File 'lib/mongoid/contextual/memory.rb', linha 494

def segundo_to_last!
  segundo_to_last || create_document_not_Found_error
end

#skip(value) ➤ Memória

Ignora o número fornecido de documentos.

Exemplos:

Ignore os documentos.

context.skip(20)

Parâmetros:

  • valor (Inteiro)

    O número de documentos a ignorar.

Retorna:



336
337
338
339
# File 'lib/mongoid/contextual/memory.rb', linha 336

def ignorar(valor)
  auto.pular = valor
  auto
end

#sort(values) ⇒ Memory

Classifica os documentos pela especificação fornecida.

Exemplos:

Classifique os documentos.

context.sort(name: -1, title: 1)

Parâmetros:

  • values (Hash)

    Os valores de classificação como pares de campo/direção(1/-1).

Retorna:



350
351
352
# File 'lib/mongoid/contextual/memory.rb', linha 350

def sort(values)
  in_place_sort(values) e a auto
end

#take(limit = nil) ⇒ Document

Pegue o número fornecido de documentos do banco de dados.

Exemplos:

Pegue um documento.

context.take

Parâmetros:

  • limit (Inteiro | nulo) (padrão para: nil)

    O número de documentos a serem aceitos ou nulos.

Retorna:



306
307
308
309
310
311
312
# File 'lib/mongoid/contextual/memory.rb', linha 306

def levar(limit = nada)
  se limit
    modified_load(documentos.levar(limit))
  mais
    modified_load([ documentos.primeiro ]).primeiro
  end
end

#take!Document

Pegue o número fornecido de documentos do banco de banco de dados ou gere um erro se nenhum for encontrado.

Exemplos:

Pegue um documento.

context.take

Retorna:

Aumenta:



324
325
326
# File 'lib/mongoid/contextual/memory.rb', linha 324

def pegue!
  levar || create_document_not_Found_error
end

#tally(campo) ➤ Hash

Registrar os valores de campo na memória.

Exemplos:

Obtenha as contagens de valores na memória.

context.tally(:name)

Parâmetros:

  • Campo (string | Símbolo)

    Campo a ser computado.

Retorna:

  • (Hash)

    O hash das contagens.



290
291
292
293
294
295
296
# File 'lib/mongoid/contextual/memory.rb', linha 290

def contagem(Campo)
  documentos.cada_com_objeto({}) fazer |d, acc|
    v = retrieve_value_at_path(d, Campo)
    acc[v] ||= 0
    acc[v] += 1
  end
end

#terceiroDocumento

Obtenha o terceiro document no banco de dados para o seletor dos critérios.

Exemplos:

Obtenha o terceiro documento.

context.third

Retorna:



408
409
410
# File 'lib/mongoid/contextual/memory.rb', linha 408

def terceiro
  modified_load([ documentos.terceiro ]).primeiro
end

#terceiro!Documento

Obtenha o terceiro document no banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o terceiro documento.

context.third!

Retorna:

Aumenta:



422
423
424
# File 'lib/mongoid/contextual/memory.rb', linha 422

def terceiro!
  terceiro || create_document_not_Found_error
end

#terceiro_to_last ➤ Documento

Obtenha o penúltimo document no banco de dados para o seletor de critérios.

Exemplos:

Obtenha o penúltimo documento.

context.third_to_last

Retorna:



504
505
506
# File 'lib/mongoid/contextual/memory.rb', linha 504

def terceiro_to_last
  modified_load([ documentos.terceiro_to_last ]).primeiro
end

#terceiro_to_last!Documento

Obtenha o penúltimo document no banco de dados para o seletor do critério ou gere um erro se nenhum for encontrado.

Exemplos:

Obtenha o penúltimo documento.

context.third_to_last!

Retorna:

Aumenta:



518
519
520
# File 'lib/mongoid/contextual/memory.rb', linha 518

def terceiro_to_last!
  terceiro_to_last || create_document_not_Found_error
end

#atualização(atributos = nil) ➤ nil | false

Atualize o primeiro documento correspondente atomicamente.

Exemplos:

Atualize o documento correspondente.

context.update(name: "Smiths")

Parâmetros:

  • attributes (Hash) (padrão para: nil)

    Os novos atributos para o documento.

Retorna:

  • (nil | false)

    Falso se nenhum atributo foi fornecido.



362
363
364
# File 'lib/mongoid/contextual/memory.rb', linha 362

def update(attributes = nada)
  update_documents(attributes, [ primeiro ])
end

#update_all(attributes = nil) ➤ nil | false

Atualize todos os documentos correspondentes atomicamente.

Exemplos:

Atualize todos os documentos correspondentes.

context.update_all(name: "Smiths")

Parâmetros:

  • attributes (Hash) (padrão para: nil)

    Os novos atributos para cada documento.

Retorna:

  • (nil | false)

    Falso se nenhum atributo foi fornecido.



374
375
376
# File 'lib/mongoid/contextual/memory.rb', linha 374

def update_all(attributes = nada)
  update_documents(attributes, entradas)
end