Classe: Mongoide::Contextual::Mongo
- Herda:
-
Objeto
- Objeto
- Mongoid::Contexto::Mongo
- 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
Recolhimento do Resumo do atributo de instância
-
#documents_loader ➤ Objeto
Somente leitura
Retorna o valor do atributo documents_loader.
-
#view ➤ Hash
Somente leitura
Execute uma explicação sobre os critérios.
- #view A visualização da collection mongo .(TheMongocollectionview.) ➤ Objeto Somente leitura
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
-
#count(options = {}, &block) ➤ Inteiro
Obtenha o número de documentos correspondentes à query.
-
#delete ➤ nil (também: #delete_all)
Exclua todos os documentos no banco de dados que correspondam ao seletor.
-
#Destruir ➤ nil (também: #destroy_all)
Destrua todos os documentos no banco de banco de dados que correspondam ao seletor.
-
#distinct(campo) ➤ Array<Object>
Obtenha os valores distintos no banco de dados para o campo fornecido .
-
#cada(&bloco) ➤ Enumerador
Iterar sobre o contexto.
-
#estimated_count(options = {}) ➤ Inteiro
Obtenha o número estimado de documentos correspondentes à query.
-
#existe?(id_or_ conditions = :none) ➤ true | false
Existem documentos para o contexto.
-
#quinto ➤ Documento | nada
Obtenha o quinto documento no banco de banco de dados para o seletor de critérios.
-
#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.
-
#find_first ➤ Objeto
privado
Retorne o primeiro resultado sem aplicar classificação.
-
#find_one_and_delete ➤ Documento
Execute o comando localizar e modificar, usado para o $findAndModify do MongoDB.
-
#find_one_and_replace(substituição, opções = {}) ➤ Documento
Execute o comando localizar e modificar, usado para o $findAndModify do MongoDB.
-
#find_one_and_update(update, options = {}) ➤ Document
Execute o comando localizar e modificar, usado para o $findAndModify do MongoDB.
-
#first(limit = nil) ➤ Documento | nil (também: #one)
Obtenha o primeiro documento no banco de banco de dados para o seletor dos critérios.
-
#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.
-
#quarto ➤ Documento | nada
Obtenha o quarto documento no banco de banco de dados para o seletor dos critérios.
-
#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.
- #geo_near(coordenadas) ➤ GeoNear obsoleto Obsoleto.
-
#initialize(critérios) ➤ mongo
construtor
Crie o novo contexto do mongo .
-
#last(limit = nil) ⇒ Document | nil
Obtenha o último documento no banco de banco de dados para o seletor dos critérios.
-
#last! ⇒ Document
Obtenha o último documento no banco de banco de dados para o seletor dos critérios ou gere um erro se nenhum for encontrado.
-
#comprimento ➤ inteiro (também: #size)
Retorna o número de documentos no banco de dados de dados que correspondem ao seletor de consulta.
-
#limite(valor) ➤ mongo
Limita o número de documentos retornados do banco de banco de dados.
-
#load_async ➤ Objeto
privado
Agende uma tarefa para carregar documentos para o contexto.
-
#map_reduce(mapear, reduzir) ➤ MapReduce
Inicie uma operação de mapeamento/redução a partir do contexto.
-
#pick(*fields) ➤ Objeto | Array<Object>
Escolha os valores de campo único no banco de banco de dados.
-
#pluck(*fields) ➤ Array<Object> | Array <Array<Object>>
Arraste o(s) valor(es) de campo do banco de dados.
-
#segundo ➤ Documento | nada
Obtenha o segundo documento no banco de banco de dados para o seletor dos critérios.
-
#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.
-
#segundo_para_último ➤ Documento | nada
Obtenha o penúltimo documento no banco de banco de dados para o seletor de critérios.
-
#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.
-
#skip(value) ➤ mongo
Ignora o número fornecido de documentos.
-
#sort(values = nil, &block) ⇒ Mongo
Classifica os documentos pela especificação fornecida.
-
#take(limit = nil) ➤ Documento | Array<Document>
Pegue o número fornecido de documentos do banco de dados.
-
#take! ⇒ Document
Pegue um documento do banco de dados e gere um erro se não houver nenhum.
-
#tally(campo) ➤ Hash
Obtenha um hash de contagens para os valores de um único campo.
-
#terceiro ➤ Documento | nada
Obtenha o terceiro documento no banco de banco de dados para o seletor dos critérios.
-
#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.
-
#terceiro_to_last ➤ Documento | nada
Obtenha o penúltimo documento no banco de banco de dados para o seletor de critérios.
-
#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.
-
#atualização(atributos = nil, opts = {}) ➤ nil | false
Atualize o primeiro documento correspondente atomicamente.
-
#update_all(attributes = nil, opts = {}) ⇒ nil | false
Atualize todos os documentos correspondentes atomicamente.
Métodos incluídos do Queryable
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.
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) end |
Detalhes do atributo da instância
#documents_loader ➤ Object (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 |
#view ➤ Hash (somente leitura)
Execute uma explicação sobre os critérios.
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.
76 77 78 79 80 81 82 83 84 85 86 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 76 def contar( = {}, &noum: bloco ; verb: bloquear) Método super(&noum: bloco ; verb: bloquear) se block_given? se valid_for_count_documents? vista.count_documents() mais # TODO: Remova isto quando removermos a API for_js obsoleta. # https://jira.mongodb.org/browse/MONGOID-5681 vista.contar() end end |
#delete ➤ nil Também conhecido como: delete_all
Exclua todos os documentos no banco de dados que correspondam ao seletor.
117 118 119 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 117 def excluir vista.delete_many.delete_count end |
#Destruir ➤ nil Também conhecido como: Destruir_all
Destrua todos os documentos no banco de banco de dados que correspondam ao seletor.
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 .
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.
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.
100 101 102 103 104 105 106 107 108 109 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 100 def estimated_count( = {}) 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() end |
#existe?(id_or_ conditions = :none) ➤ true | false
Não usamos contagem aqui, pois o mongo não usa índices de árvore b contados.
Existem documentos para o contexto.
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 |
#quinto ➤ Documento | nada
Obtenha o quinto documento no banco de banco de dados para o seletor de critérios.
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.
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.
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.
237 238 239 240 241 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 237 def find_one_and_replace(substituição, = {}) se doc = vista.find_one_and_replace(substituição, ) 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.
217 218 219 220 221 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 217 def find_one_and_update(update, = {}) se doc = vista.find_one_and_update(update, ) Factory.from_db(classe, doc) end end |
#first(limit = nil) ➤ Documento | nil Também conhecido como: um
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.
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
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.
601 602 603 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 601 def primeiro! primeiro || create_document_not_Found_error end |
#quarto ➤ Documento | nada
Obtenha o quarto documento no banco de banco de dados para o seletor dos critérios.
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.
715 716 717 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 715 def quarto! quarto || create_document_not_Found_error end |
#geo_near(coordenadas) ➤ GeoNear
Execute um comando $geoNear no banco de banco de dados.
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
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.
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
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.
643 644 645 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 643 def último! último || create_document_not_Found_error end |
#comprimento ➤ Inteiro Também conhecido como: tamanho
Retorna o número de documentos no banco de dados de dados que correspondem ao seletor de consulta.
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.
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.
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.
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.
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 |
#segundo ➤ Documento | nada
Obtenha o segundo documento no banco de banco de dados para o seletor dos critérios.
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.
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.
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.
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.
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.
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.
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.
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 }
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 |
#terceiro ➤ Documento | nada
Obtenha o terceiro documento no banco de banco de dados para o seletor dos critérios.
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.
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.
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.
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.
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.
558 559 560 |
# Arquivo 'lib/mongoid/contextual/mongo.rb', linha 558 def update_all(attributes = nada, opciona = {}) update_documents(attributes, :update_many, opciona) end |