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

#eager_load, #eager_loadable?, #preload

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:



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

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.



25
26
27
# File 'lib/mongoid/contextual/memory.rb', linha 25

def documentos
  @documents
end

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



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

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

#caminhoObjeto (somente leitura)

Retorna o valor do caminho do atributo.



25
26
27
# File 'lib/mongoid/contextual/memory.rb', linha 25

def caminho
  @path
end

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



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

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

#rootObject (somente leitura)

Retorna o valor da raiz do atributo.



25
26
27
# File 'lib/mongoid/contextual/memory.rb', linha 25

def Raiz
  @root
end

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



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

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

#seletorObjeto (somente leitura)

Retorna o valor do seletor de atributo.



25
26
27
# File 'lib/mongoid/contextual/memory.rb', linha 25

def seletor
  @selector
end

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



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

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.



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

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.



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

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.



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

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 .



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

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

#cadaEnumerador

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.



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

def cada
  se block_given?
    documents_for_iteration.cada fazer |doc|
      rendimento(doc)
    end
    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.



126
127
128
129
130
131
132
133
# File 'lib/mongoid/contextual/memory.rb', linha 126

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 documento no banco de banco de dados para o seletor de critérios.

Exemplos:

Obtenha o quinto documento.

context.fifth

Retorna:



454
455
456
# File 'lib/mongoid/contextual/memory.rb', linha 454

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

#quinto!Documento

Obtenha o quinto documento no banco de 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:



468
469
470
# File 'lib/mongoid/contextual/memory.rb', linha 468

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 documento no banco de 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:



143
144
145
146
147
148
149
# File 'lib/mongoid/contextual/memory.rb', linha 143

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

#primeiro!Documento

Obtenha o primeiro documento no banco de 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:



163
164
165
# File 'lib/mongoid/contextual/memory.rb', linha 163

def primeiro!
  primeiro || create_document_not_Found_error
end

#quartoDocumento

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

Exemplos:

Obtenha o quarto documento.

context.fourth

Retorna:



430
431
432
# File 'lib/mongoid/contextual/memory.rb', linha 430

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

#quarto!Documento

Obtenha o quarto documento no banco de 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:



444
445
446
# File 'lib/mongoid/contextual/memory.rb', linha 444

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.



192
193
194
195
196
# File 'lib/mongoid/contextual/memory.rb', linha 192

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

#last(limit = nil) ⇒ Document

Obtenha o último documento no banco de 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:



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

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

#último!Documento

Obtenha o último documento no banco de 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:



224
225
226
# File 'lib/mongoid/contextual/memory.rb', linha 224

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.



234
235
236
# File 'lib/mongoid/contextual/memory.rb', linha 234

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:



247
248
249
250
# File 'lib/mongoid/contextual/memory.rb', linha 247

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.



274
275
276
277
278
# File 'lib/mongoid/contextual/memory.rb', linha 274

def escolher(*Campos)
  se doc = documentos.primeiro
    shard_from_doc(doc, *Campos)
  end
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.



260
261
262
263
264
# File 'lib/mongoid/contextual/memory.rb', linha 260

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

#segundoDocumento

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

Exemplos:

Obtenha o segundo documento.

context.second

Retorna:



382
383
384
# File 'lib/mongoid/contextual/memory.rb', linha 382

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

#segundo!Documento

Obtenha o segundo documento no banco de 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:



396
397
398
# File 'lib/mongoid/contextual/memory.rb', linha 396

def segundo!
  Segundo || create_document_not_Found_error
end

#secondary_to_last ➤ Documento

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

Exemplos:

Obtenha o penúltimo documento.

context.second_to_last

Retorna:



478
479
480
# File 'lib/mongoid/contextual/memory.rb', linha 478

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

#segundo_para_último!Documento

Obtenha o penúltimo documento no banco de 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:



492
493
494
# File 'lib/mongoid/contextual/memory.rb', linha 492

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:



334
335
336
337
# File 'lib/mongoid/contextual/memory.rb', linha 334

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:



348
349
350
# File 'lib/mongoid/contextual/memory.rb', linha 348

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:



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

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:



322
323
324
# File 'lib/mongoid/contextual/memory.rb', linha 322

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.



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

def contagem(Campo)
  Método 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 documento no banco de banco de dados para o seletor dos critérios.

Exemplos:

Obtenha o terceiro documento.

context.third

Retorna:



406
407
408
# File 'lib/mongoid/contextual/memory.rb', linha 406

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

#terceiro!Documento

Obtenha o terceiro documento no banco de 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:



420
421
422
# File 'lib/mongoid/contextual/memory.rb', linha 420

def terceiro!
  terceiro || create_document_not_Found_error
end

#terceiro_to_last ➤ Documento

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

Exemplos:

Obtenha o penúltimo documento.

context.third_to_last

Retorna:



502
503
504
# File 'lib/mongoid/contextual/memory.rb', linha 502

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

#terceiro_to_last!Documento

Obtenha o penúltimo documento no banco de 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:



516
517
518
# File 'lib/mongoid/contextual/memory.rb', linha 516

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.



360
361
362
# File 'lib/mongoid/contextual/memory.rb', linha 360

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.



372
373
374
# File 'lib/mongoid/contextual/memory.rb', linha 372

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