Classe: Mongoide::Contextual::Mongo

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Inclui:
Enumerável, Associação::EagerLoadable, Atomic, Aggregable::Mongo, Queryable, Plugable
Definido em:
lib/mongoid/contextual/mongo.rb,
lib/mongoid/contextual/mongo/documents_loader.rb

Visão geral

objeto de contexto usado para executar operações de query e persistência em massa em documentos que persistem no banco de banco de dados e não foram carregados na memória do aplicação .

Definido sob namespace

Classes: DocumentsLoader

Colapsode resumo constante

OPÇÕES =

Constante de opções.

%i[dica
limit
ignorar
sort
batch_size
max_scan
max_time_ms
snapshot
comment
ler
cursor_type
agrupamento].congelar

Constantes incluídas do Atomic

Atomic::UPDATES

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 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 Atomic

#add_atomic_pull, #add_atomic_unset, #atomic_array_add_to_sets, #atomic_array_pulls, #atomic_array_pushes, #atomic_attribute_name, #atomic_delete_modifier, #atomic_insert_modifier, #atomic_path, #atomic_paths, #atomic_position, #atomic_pulls, #atomic_pushes, #atomic_sets, #atomic_unsets, #atomic_updates, #delayed_atomic_pulls, #delayed_atomic_sets, #delayed_atomic_unsets, #marca_as_destroyed, #primaged_destroys, #process_lagaged_destroys

Métodos incluídos do Aggregable::Mongo

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

Detalhes do construtor

#initialize(critérios) ➤ mongo

Crie o novo contexto do mongo . Isso delega operações ao driver subjacente.

Exemplos:

Crie o novo contexto.

Mongo.new(criteria)

Parâmetros:



269
270
271
272
273
274
275
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 269

def inicializar(critério)
  @criteria, @klass = critério, critério.classe
  @collection = @klass.collection
  critério.enviar(:merge_type_selection)
  @view = collection.find(critério.seletor, sessão: _session)
  apply_options
end

Detalhes do atributo da instância

#documents_loaderObject (somente leitura)

Retorna o valor do atributo documents_loader.



53
54
55
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 53

def documents_loader
  @documents_loader
end

#viewHash (somente leitura)

Execute uma explicação sobre os critérios.

Exemplos:

Explique os critérios.

Band.where(name: "Depeche Mode").explain

Parâmetros:

  • opções (Hash)

    opções personalizáveis (consulte Mongo::Collection::View::Explainable)

Retorna:

  • (Hash)

    O resultado de explicação.



41
42
43
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 41

def vista
  @view
end

#view A visualização da collection mongo .(TheMongocollectionview.) ➤ Objeto (somente leitura)



41
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 41

attr_reader :view

Detalhes do método de instância

#count(options = {}, &block) ➤ Inteiro

Obtenha o número de documentos correspondentes à query.

Exemplos:

Obtenha o número de documentos correspondentes.

context.count

Obtenha a contagem de documentos com as opções fornecidas.

context.count(limit: 1)

Obtenha a contagem de onde o bloqueio fornecido é verdadeiro.

context.count do |doc|
  doc.likes > 1
end

Parâmetros:

  • opções (Hash) (padrão para: {})

    As opções, como pular e limitar, serão consideradas na contagem.

Retorna:

  • (Inteiro)

    O número de correspondências.



72
73
74
75
76
77
78
79
80
81
82
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 72

def contar(opções = {}, &noum: bloco ; verb: bloquear)
  Método super(&noum: bloco ; verb: bloquear) se block_given?

  se valid_for_count_documents?
    vista.count_documents(opções)
  mais
    # TODO: Remova isto quando removermos a API for_js obsoleta.
    # https://jira.mongodb.org/browse/MONGOID-5681
    vista.contar(opções)
  end
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.



112
113
114
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 112

def excluir
  vista.delete_many.delete_count
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.



123
124
125
126
127
128
129
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 123

def destruir
  cada.injetar(0) fazer |contar, doc|
    doc.destruir
    contar += 1 se acknowledgement_write?
    contar
  end
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 .



140
141
142
143
144
145
146
147
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 140

def distinto(Campo)
  name = classe.Clean_localized_field_names(Campo)

  vista.distinto(name).map fazer |valor|
    is_translation = "#{name}_translations" == Campo.to_s
    recursive_demongoize(name, valor, is_translation)
  end
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.



158
159
160
161
162
163
164
165
166
167
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 158

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

#estimated_count(options = {}) ➤ Inteiro

Obtenha o número estimado de documentos correspondentes à query.

Ao contrário da contagem, estimated_count não usa um bloco porque não é Tradicionalmente definido (com um bloco) em Enumerable como a contagem.

Exemplos:

Obtenha o número estimado de documentos correspondentes.

context.estimated_count

Parâmetros:

  • opções (Hash) (padrão para: {})

    As opções, como maxTimeMS, devem ser consideradas na contagem.

Retorna:

  • (Inteiro)

    O número de correspondências.



96
97
98
99
100
101
102
103
104
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 96

def estimated_count(opções = {})
  a menos que critério.seletor.vazio?
    aumentar Mongoid::Errors::InvalidEstimatedCountScoping.Novo(classe) se classe.default_scoping?

    aumentar Mongoid::Errors::InvalidEstimatedCountCriteria.Novo(classe)

  end
  vista.estimated_document_count(opções)
end

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

Observação:

Não usamos contagem aqui, pois o mongo não usa índices de B-tree contados.

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.



188
189
190
191
192
193
194
195
196
197
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 188

def existe?(id_or_ conditions = : none)
  Método false se vista.limit == 0

  caso id_or_ conditions
  quando : none então !!vista.projeção(_id: 1).limit(1).primeiro
  quando nada, false então false
  quando Hash então mongo.Novo(critério.ONDE(id_or_ conditions)).existe?
  mais mongo.Novo(critério.ONDE(_id: id_or_ conditions)).existe?
  end
end

#quintoDocumento | nada

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

Exemplos:

Obtenha o quinto documento.

context.fifth

Retorna:

  • (Document | nil)

    O quinto documento ou nulo se nenhum for encontrado.



684
685
686
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 684

def quinto
  retrieve_nth(4)
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:



698
699
700
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 698

def quinto!
  quinto || create_document_not_Found_error
end

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

Retornar o primeiro resultado sem aplicar classificação



255
256
257
258
259
260
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 255

def find_first
  Método a menos que bruto_doc = vista.primeiro

  doc = Factory.from_db(classe, bruto_doc, critério)
  modified_load([ doc ]).primeiro
end

#find_one_and_delete ➤ Documento

Execute o comando localizar e modificar, usado para o $findAndModify do MongoDB. Isso exclui o document encontrado.

Exemplos:

Execute o comando.

context.find_one_and_delete

Retorna:



246
247
248
249
250
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 246

def find_one_and_delete
  Método a menos que doc = vista.find_one_and_delete

  Factory.from_db(classe, doc)
end

#find_one_and_replace(substituição, opções = {}) ➤ Documento

Execute o comando localizar e modificar, usado para o $findAndModify do MongoDB.

Exemplos:

Execute o comando.

context.find_one_and_update({ likes: 1 })

Parâmetros:

  • substituição (Hash)

    A substituição.

  • opções (Hash) (padrão para: {})

    As opções de comando.

Hash de opções (opções):

  • :return_document (:before | :after)

    Retorne o documento atualizado antes ou depois da atualização.

  • :upsert (verdadeiro | falso)

    Crie o document se ele não existir.

Retorna:



233
234
235
236
237
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 233

def find_one_and_replace(substituição, opções = {})
  Método a menos que doc = vista.find_one_and_replace(substituição, opções)

  Factory.from_db(classe, doc)
end

#find_one_and_update(update, options = {}) ⇒ Document

Execute o comando localizar e modificar, usado para o $findAndModify do MongoDB.

Exemplos:

Execute o comando.

context.find_one_and_update({ "$inc" => { likes: 1 }})

Parâmetros:

  • update (Hash)

    As atualizações.

  • opções (Hash) (padrão para: {})

    As opções de comando.

Hash de opções (opções):

  • :return_document (:before | :after)

    Retorne o documento atualizado antes ou depois da atualização.

  • :upsert (verdadeiro | falso)

    Crie o document se ele não existir.

Retorna:



213
214
215
216
217
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 213

def find_one_and_update(update, opções = {})
  Método a menos que doc = vista.find_one_and_update(update, opções)

  Factory.from_db(classe, doc)
end

#first(limit = nil) ➤ Documento | nil Também conhecido como: um

Observação:

Adicionar automaticamente uma classificação no _id quando nenhuma outra classificação está definida nos critérios tem o potencial de causar problemas de desempenho ruins. Se você tiver um desempenho ruim inesperado ao usar #first ou #last e não tiver nenhuma classificação definida nos critérios, use #take em vez disso. Esteja ciente de que #take não garante o pedido.

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:

  • (Document | nil)

    O primeiro documento ou nulo se nenhum for encontrado.



535
536
537
538
539
540
541
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 535

def primeiro(limit = nada)
  se limit.nada?
    retrieve_nth(0)
  mais
    retrieve_nth_with_limit(0, limit)
  end
end

#primeiro!Documento

Observação:

Adicionar automaticamente uma classificação no _id quando nenhuma outra classificação está definida nos critérios tem o potencial de causar problemas de desempenho ruins. Se você tiver um desempenho ruim inesperado ao usar o #first! ou #last! e não tiver nenhuma classificação definida nos critérios, use #take! no lugar. Esteja ciente de que #take! não garante o pedido.

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:



560
561
562
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 560

def primeiro!
  primeiro || create_document_not_Found_error
end

#quartoDocumento | nada

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

Exemplos:

Obtenha o quarto documento.

context.fourth

Retorna:

  • (Document | nil)

    O quarto documento ou nulo se nenhum for encontrado.



660
661
662
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 660

def quarto
  retrieve_nth(3)
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:



674
675
676
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 674

def quarto!
  quarto || create_document_not_Found_error
end

#last(limit = nil) ⇒ Document | nil

Observação:

Adicionar automaticamente uma classificação no _id quando nenhuma outra classificação está definida nos critérios tem o potencial de causar problemas de desempenho ruins. Se você tiver um desempenho ruim inesperado ao usar #first ou #last e não tiver nenhuma classificação definida nos critérios, use #take em vez disso. Esteja ciente de que #take não garante o pedido.

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:

  • (Document | nil)

    O último documento ou nulo se nenhum for encontrado.



578
579
580
581
582
583
584
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 578

def último(limit = nada)
  se limit.nada?
    retrieve_nth_to_last(0)
  mais
    retrieve_nth_to_last_with_limit(0, limit)
  end
end

#último!Documento

Observação:

Adicionar automaticamente uma classificação no _id quando nenhuma outra classificação está definida nos critérios tem o potencial de causar problemas de desempenho ruins. Se você tiver um desempenho ruim inesperado ao usar o #first! ou #last! e não tiver nenhuma classificação definida nos critérios, use #take! no lugar. Esteja ciente de que #take! não garante o pedido.

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:



602
603
604
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 602

def último!
  último || create_document_not_Found_error
end

#comprimentoInteiro Também conhecido como: tamanho

Retorna o número de documentos no banco de dados de dados que correspondem ao seletor de consulta.

Exemplos:

Obtenha o comprimento.

context.length

Retorna:

  • (Inteiro)

    O número de documentos.



286
287
288
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 286

def Tamanho
  contar
end

#limite(valor) ➤ mongo

Limita o número de documentos retornados do banco de banco de dados.

Exemplos:

Limite os documentos.

context.limit(20)

Parâmetros:

  • valor (Inteiro)

    O número de documentos a retornar.

Retorna:

  • (mongo)

    O contexto.



299
300
301
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 299

def limit(valor)
  @view = vista.limit(valor) e a auto
end

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

Agende uma tarefa para carregar documentos para o contexto.

Dependendo da configuração do Mongoid, a tarefa agendada pode ser executada imediatamente na conversa do chamador ou pode ser agendada para uma execução assíncrona.



761
762
763
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 761

def load_async
  @documents_loader ||= DocumentsLoader.Novo(vista, classe, critério)
end

#map_reduce(mapear, reduzir) ➤ MapReduce

Inicie uma operação de mapeamento/redução a partir do contexto.

Exemplos:

Inicie um mapa/redução.

context.map_reduce(map, reduce)

Parâmetros:

  • map (string)

    A função JavaScript do mapa.

  • reduzir (string)

    A função reduzir JavaScript .

Retorna:

  • (MapReduce)

    O wrapper preguiçoso de mapa/redução .



312
313
314
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 312

def map_reduce(map, reduzir)
  Redução de mapa.Novo(collection, critério, map, reduzir)
end

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

Escolha os valores de campo único no banco de banco de dados.

Exemplos:

Escolha um campo.

context.pick(:_id)

Parâmetros:

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

    Campo(s) a ser escolhido(s).

Retorna:

  • (Object | Array<Object>)

    Os valores escolhidos.



349
350
351
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 349

def escolher(*Campos)
  limit(1).raspar(*Campos).primeiro
end

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

Arrancar o(s) valor(es) de campo do banco de dados de dados. Retorna um resultado para cada documento encontrado no banco de banco de dados para o contexto. Os resultados são normalizados de acordo com seus tipos de campo Mongoid. Observe que os resultados podem incluir duplicatas e valores nulos.

Exemplos:

Arraste um campo.

context.pluck(:_id)

Parâmetros:

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

    Campo(s) a ser(em) removido(s), que podem incluir campos aninhados usando notação de ponto.

Retorna:

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

    Os valores colhidos. Se o *fields arg contiver um único valor, cada resultado na array será um único valor. Caso contrário, cada resultado na array será uma array de valores.



332
333
334
335
336
337
338
339
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 332

def raspar(*Campos)
  # Vários campos podem mapear para o mesmo nome de campo . Por exemplo,
  # colhendo um campo e seu mapa de campo _translations para o mesmo
  # campo no banco de dados. por isso, precisamos preparar o
  # projeção especificamente.
  prep = prepare_pluck(Campos, prepare_projection: true)
  pluck_from_documents(vista.projeção(prep[:projection]), prep[:field_names])
end

#segundoDocumento | nada

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

Exemplos:

Obtenha o segundo documento.

context.second

Retorna:

  • (Document | nil)

    O segundo documento ou nulo se nenhum for encontrado.



612
613
614
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 612

def Segundo
  retrieve_nth(1)
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:



626
627
628
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 626

def segundo!
  Segundo || create_document_not_Found_error
end

#segundo_para_último ➤ Documento | nada

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

é encontrado.

Exemplos:

Obtenha o penúltimo documento.

context.second_to_last

Retorna:

  • (Document | nil)

    O penúltimo documento ou nulo se não houver nenhum



710
711
712
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 710

def segundo_to_last
  retrieve_nth_to_last(1)
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:



724
725
726
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 724

def segundo_to_last!
  segundo_to_last || create_document_not_Found_error
end

#skip(value) ➤ mongo

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:

  • (mongo)

    O contexto.



465
466
467
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 465

def ignorar(valor)
  @view = vista.ignorar(valor) e a auto
end

#sort(values = nil, &block) ⇒ Mongo

Classifica os documentos pela especificação fornecida.

Exemplos:

Classifique os documentos.

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

Parâmetros:

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

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

Retorna:

  • (mongo)

    O contexto.



478
479
480
481
482
483
484
485
486
487
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 478

def sort(values = nada, &noum: bloco ; verb: bloquear)
  se block_given?
    super(&noum: bloco ; verb: bloquear)
  mais
    # atualize os critérios
    @criteria = critério.order_by(values)
    apply_option(:sort)
    auto
  end
end

#take(limit = nil) ⇒ Document | Array<Document>

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

Exemplos:

Pegue 10 documentos

context.take(10)

Parâmetros:

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

    O número de documentos a serem devolvidos ou nulo.

Retorna:

  • (Documento | Array <Documento>)

    A lista de documentos, ou um documento se nenhum valor foi fornecido.



362
363
364
365
366
367
368
369
370
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 362

def levar(limit = nada)
  se limit
    limit(limit).to_a
  mais
    # Faça to_a primeiro para que o método Mongo#first não seja usado e o
    # resultado não classificado.
    limit(1).to_a.primeiro
  end
end

#take!Document

Pegue um documento do banco de dados e gere um erro se não houver nenhum.

Exemplos:

Pegar um documento

context.take!

Retorna:

Aumenta:



381
382
383
384
385
386
387
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 381

def pegue!
  # Faça to_a primeiro para que o método Mongo#first não seja usado e o
  # resultado não classificado.
  aumentar Errors::DocumentNotFound.Novo(classe, nada, nada) a menos que fst = limit(1).to_a.primeiro

  fst
end

#tally(campo) ➤ Hash

Obtenha um hash de contagens para os valores de um único campo. Por exemplo, se os seguintes documentos estivessem no banco de dados:

{ _id: 1, age: 21 }
{ _id: 2, age: 21 }
{ _id: 3, age: 22 }

Model.tally("age")

daria o seguinte resultado:

{ 21 => 2, 22 => 1 }

Ao contar um campo dentro de uma array ou associação embeds_many:

{ _id: 1, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 2, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 3, array: [ { x: 1 }, { x: 3 } ] }

Model.tally("array.x")

As chaves do hash resultante são arrays:

{ [ 1, 2 ] => 2, [ 1, 3 ] => 1 }

Observe que, se registrar um elemento em uma matriz de hashes e a chave não existir em alguns dos hashes, a contagem não incluirá essas chaves nulas no hash resultante:

{ _id: 1, array: [ { x: 1 }, { x: 2 }, { y: 3 } ] }

Model.tally("array.x")
# => { [ 1, 2 ] => 1 }

Parâmetros:

  • Campo (string | Símbolo)

    O nome do campo .

Retorna:

  • (Hash)

    O hash das contagens.



426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 426

def contagem(Campo)
  name = classe.Clean_localized_field_names(Campo)

  fld = classe.traverse_association_tree(name)
  gasoduto = [ { '$group ' => { _id: "$#{nome}", conta: { '$sum': 1 } } } ]
  pipeline.unshift('$match' => visualizar.filtro) a menos que seja visualizado.filtro.em branco?

  coleção.aggregate(pipeline).each_with_object({}) do |doc, registros|
    is_translation = "#{name}_translations" == campo.to_s
      

       
              
                
            
          
              
          

    
    
    
    
    
        valor = doc [ ' _id ' ] chave = se valor. is_a? ( Array ) valid. mapa do | v | demongoize_with_field ( fld, v, is_translation ) end outra demongoize_with_field ( fld, valid, is_translation ) end # O único momento em que uma chave já existirá no hash de registros # é quando os valores são armazenados de forma diferente no banco de dados, mas #mongoize para o mesmo valor. Um bom exemplo de quando isso acontece # é ao usar campos localizados. Embora a consulta do servidor não agrupe # hashes que tenham outros valores em idiomas diferentes, o valor desmongoizado é apenas a tradução na locale atual, # que pode ser o mesmo em vários desses hashes desiguais.
    talries[key] ||= 0
    talries[key] += doc['counts']
  end
end

#terceiroDocumento | nada

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

Exemplos:

Obtenha o terceiro documento.

context.third

Retorna:

  • (Document | nil)

    O terceiro documento ou nulo se nenhum for encontrado.



636
637
638
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 636

def terceiro
  retrieve_nth(2)
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:



650
651
652
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 650

def terceiro!
  terceiro || create_document_not_Found_error
end

#terceiro_to_last ➤ Documento | nada

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

é encontrado.

Exemplos:

Obtenha o penúltimo documento.

context.third_to_last

Retorna:

  • (Document | nil)

    O penúltimo documento ou nulo se nenhum



736
737
738
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 736

def terceiro_to_last
  retrieve_nth_to_last(2)
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:



750
751
752
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 750

def terceiro_to_last!
  terceiro_to_last || create_document_not_Found_error
end

#atualização(atributos = nil, opts = {}) ➤ nil | false

Atualize o primeiro documento correspondente atomicamente.

Exemplos:

Atualize o primeiro documento correspondente.

context.update({ "$set" => { name: "Smiths" }})

Parâmetros:

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

    Os novos atributos para o documento.

  • opciona (Hash) (padrão para: {})

    As opções de operação de atualização.

Hash de opções (opts):

  • :array_filters (Array)

    Um conjunto de filtros que especificam a quais elementos da array uma atualização deve ser aplicada.

Retorna:

  • (nil | false)

    Falso se nenhum atributo foi fornecido.



501
502
503
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 501

def update(attributes = nada, opciona = {})
  update_documents(attributes, :update_one, opciona)
end

#update_all(attributes = nil, opts = {}) ➤ nil | false

Atualize todos os documentos correspondentes atomicamente.

Exemplos:

Atualize todos os documentos correspondentes.

context.update_all({ "$set" => { name: "Smiths" }})

Parâmetros:

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

    Os novos atributos para cada documento.

  • opciona (Hash) (padrão para: {})

    As opções de operação de atualização.

Hash de opções (opts):

  • :array_filters (Array)

    Um conjunto de filtros que especificam a quais elementos da array uma atualização deve ser aplicada.

Retorna:

  • (nil | false)

    Falso se nenhum atributo foi fornecido.



517
518
519
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 517

def update_all(attributes = nada, opciona = {})
  update_documents(attributes, :update_many, opciona)
end