Classe: Mongoide::Contextual::Mongo

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Inclui:
Enumerável, Associação::EagerLoadable, Atomic, Aggregable::Mongo, Queryable
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.

[ :hint,
  :limit,
  :skip,
  :sort,
  :batch_size,
  :max_scan,
  :max_time_ms,
  :snapshot,
  :comentário,
  :read,
  :cursor_type,
  :collation
].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

#eager_load, #eager_loadable?, #preload

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:



296
297
298
299
300
301
302
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 296

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.



57
58
59
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 57

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.



45
46
47
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 45

def vista
  @view
end

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



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

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.



76
77
78
79
80
81
82
83
84
85
86
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 76

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.



117
118
119
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 117

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.



128
129
130
131
132
133
134
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 128

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 .



145
146
147
148
149
150
151
152
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 145

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.



163
164
165
166
167
168
169
170
171
172
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 163

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 Enumarable 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.



100
101
102
103
104
105
106
107
108
109
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 100

def estimated_count(opções = {})
  a menos que auto.critério.seletor.vazio?
    se classe.default_scoping?
      aumentar Mongoid::Errors::InvalidEstimatedCountScoping.Novo(auto.classe)
    mais
      aumentar Mongoid::Errors::InvalidEstimatedCountCriteria.Novo(auto.classe)
    end
  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 árvore b 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.



193
194
195
196
197
198
199
200
201
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 193

def existe?(id_or_ conditions = : none)
  Método false se auto.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 documento no banco de 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.



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

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



739
740
741
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 739

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



259
260
261
262
263
264
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 259

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

#find_one_and_delete ➤ Documento

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

Exemplos:

Execute o comando.

context.find_one_and_delete

Retorna:



250
251
252
253
254
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 250

def find_one_and_delete
  se doc = vista.find_one_and_delete
    Factory.from_db(classe, doc)
  end
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 documento se ele não existir.

Retorna:



237
238
239
240
241
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 237

def find_one_and_replace(substituição, opções = {})
  se doc = vista.find_one_and_replace(substituição, opções)
    Factory.from_db(classe, doc)
  end
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 documento se ele não existir.

Retorna:



217
218
219
220
221
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 217

def find_one_and_update(update, opções = {})
  se doc = vista.find_one_and_update(update, opções)
    Factory.from_db(classe, doc)
  end
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 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:

  • (Document | nil)

    O primeiro documento ou nulo se nenhum for encontrado.



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

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



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

def primeiro!
  primeiro || create_document_not_Found_error
end

#quartoDocumento | nada

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



701
702
703
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 701

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



715
716
717
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 715

def quarto!
  quarto || create_document_not_Found_error
end

#geo_near(coordenadas) ➤ GeoNear

Obsoleto.

Execute um comando $geoNear no banco de banco de dados.

Exemplos:

Encontre documentos próximos a 10, 10.

context.geo_near([ 10, 10 ])

Encontre com distância esférica.

context.geo_near([ 10, 10 ]).spherical

Encontre com uma distância máxima.

context.geo_near([ 10, 10 ]).max_distance(0.5)

Forneça um multiplicador de distância.

context.geo_near([ 10, 10 ]).distance_multiplier(1133)

Parâmetros:

  • coordinates (Array<Float>)

    As coordenadas.

Retorna:



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

def geo_near(coordinates)
  geoPerto.Novo(collection, critério, coordinates)
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 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:

  • (Document | nil)

    O último documento ou nulo se nenhum for encontrado.



619
620
621
622
623
624
625
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 619

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



643
644
645
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 643

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.



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

def Tamanho
  auto.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.



326
327
328
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 326

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.



802
803
804
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 802

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 .



339
340
341
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 339

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.



387
388
389
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 387

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.



359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 359

def raspar(*Campos)
  # Vários campos podem mapear para o mesmo nome de campo. Por exemplo, podar
  # um campo e seu mapa de campo _translations para o mesmo campo no banco de banco de dados.
  # por isso precisamos manter o controle dos campos solicitados.
  normalized_field_names = []
  normalized_select = Campos.injetar({}) fazer |hash, f|
    db_fn = classe.database_field_name(f)
    normalized_field_names.push(db_fn)
    hash[classe.Clean_localized_field_names(f)] = true
    hash
  end

  vista.projeção(normalized_select).reduzir([]) fazer |colhidas, doc|
    values = normalized_field_names.map fazer |n|
      extract_value(doc, n)
    end
    colhidas << (values.Tamanho == 1 ? values.primeiro : values)
  end
end

#segundoDocumento | nada

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



653
654
655
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 653

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



667
668
669
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 667

def segundo!
  Segundo || create_document_not_Found_error
end

#segundo_para_último ➤ Documento | nada

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



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

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



765
766
767
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 765

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.



506
507
508
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 506

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.



519
520
521
522
523
524
525
526
527
528
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 519

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.



400
401
402
403
404
405
406
407
408
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 400

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:



419
420
421
422
423
424
425
426
427
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 419

def pegue!
  # Faça to_a primeiro para que o método Mongo#first não seja usado e o
  # resultado não classificado.
  se fst = limit(1).to_a.primeiro
    fst
  mais
    aumentar Errors::DocumentNotFound.Novo(classe, nada, nada)
  end
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.



466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 466

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 vejao.filtro.em branco?

  collection.agregado(pipeline).reduzir({}) fazer |registros, doc|
    is_translation = "#{name}_translations" == campo.to_s
    valor = documento["_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 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"]
    talries
  end
end

#terceiroDocumento | nada

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



677
678
679
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 677

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



691
692
693
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 691

def terceiro!
  terceiro || create_document_not_Found_error
end

#terceiro_to_last ➤ Documento | nada

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



777
778
779
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 777

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



791
792
793
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 791

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.



542
543
544
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 542

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.



558
559
560
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 558

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