Classe: Mongoid::Criteria
- Herda:
-
Objeto
- Objeto
- Mongoid::Criteria
- Inclui:
- Enumerável, Inspecionável , Mongoid::Clients::Options, Mongoid::Clients::Sessions, Contextual, Localizável, Includable, Ordenadopor , Modificável , Opções, Queryable , Escopo
- Definido em:
- lib/mongoid/criteria.rb,
lib/mongoid/criteria/options.rb,
lib/mongoid/criteria/findable.rb,
lib/mongoid/criteria/scopable.rb,
lib/mongoid/criteria/queryable.rb,
lib/mongoid/criteria/includable.rb,
lib/mongoid/criteria/modavailable.rb,
lib/mongoid/criteria/permission.rb,
lib/mongoid/criteria/translator.rb,
lib/mongoid/criteria/marshable.rb,
lib/mongoid/criteria/queryable/key.rb,
lib/mongoid/criteria/queryable/smash.rb,
lib/mongoid/criteria/queryable/options.rb,
lib/mongoid/criteria/queryable/optional.rb,
lib/mongoid/criteria/queryable/pipeline.rb,
lib/mongoid/criteria/queryable/selector.rb,
lib/mongoid/criteria/queryable/storable.rb,
lib/mongoid/criteria/queryable/macroable.rb,
lib/mongoid/criteria/queryable/mergeable.rb,
lib/mongoid/criteria/queryable/aggregable.rb,
lib/mongoid/criteria/queryable/expandable.rb,
lib/mongoid/criteria/queryable/selectable.rb,
lib/mongoid/criteria/queryable/extensions/set.rb,
lib/mongoid/criteria/queryable/extensions/date.rb,
lib/mongoid/criteria/queryable/extensions/hash.rb,
lib/mongoid/criteria/queryable/extentions/time.rb,
lib/mongoid/criteria/queryable/extentions/array.rb,
lib/mongoid/criteria/queryable/extensions/range.rb,
lib/mongoid/criteria/queryable/extensão/ objeto.rb,
lib/mongoid/criteria/queryable/extensions/regexp.rb,
lib/mongoid/criteria/queryable/extensions/string.rb,
lib/mongoid/criteria/queryable/extensions/symbol.rb,
lib/mongoid/criteria/queryable/extensions/boolean.rb,
lib/mongoid/criteria/queryable/extentions/numeric.rb,
lib/mongoid/criteria/queryable/extentions/date_time.rb,
lib/mongoid/criteria/queryable/extentions/nil_class.rb,
lib/mongoid/criteria/queryable/extentions/big_decimal.rb,
lib/mongoid/criteria/queryable/extensions/time_with_zone.rb
Visão geral
A classe Criteria
é o objeto principal necessário no Mongoid para recuperar objetos do banco de banco de dados. É um DSL que essencialmente define o seletor e as opções de argumentos que são passados para uma Mongo::Collection no driver Ruby. Cada método no Criteria
retorna a si mesmo para eles podem ser encadeados a fim de criar um critério legível a ser executado no banco de banco de dados.
Definido sob namespace
Módulos: Localizável, Includable, Secundável, Modificável, Opções, Permissão, Queryable, Escopável, Tradutor
Colapsode resumo constante
- Verificar =
Array estática usada para verificar com o método ausente - só precisamos instanciar uma vez.
[]
Recolhimento do Resumo do atributo de instância
-
#associação ➤ Objeto
Retorna o valor da associação de atributo.
-
# Objeto ➤incorporado
Retorna o valor do atributo incorporado.
-
#klass ➤ Objeto
Retorna o valor do atributo klass.
-
#parent_document ➤ Objeto
Retorna o valor do atributo parent_document.
Atributos incluídos de Modificável
#create_attrs, #create_attrs Atributos adicionais a serem adicionados ao documento após a criação.
Atributos incluídos no Queryable
#aliases, #aliases Os aliases., #serializers, #serializers Os serializadores.
Atributos incluídos de Queryable::Optional
#options, #options As opções de query.
Atributos incluídos de Queryable::aggregable
#aggregating, #aggregating Sinalizador se estamos ou não agregando., #pipeline, #pipeline O agregação pipeline.
Atributos incluídos de Queryable::Mergeable
#strategy, #strategy O nome da estratégia atual.
Recolhimento do Resumo do método de classe
-
.from_hash(hash) ➤ Critérios
Converta o hash fornecido em um critério.
Recolhimento do Resumo do método de instância
-
#==(outro) ➤ verdadeiro | false
Retorna verdadeiro se o
Enumerable
ouCriteria
fornecido for igual aos resultados desteCriteria
ou aos próprios critérios. - #_enumerable_find ⇒ Object privado
- #_findable_find ➤ Objeto privado
-
#as_json(options = nil) ⇒ String
Necessário para obter corretamente um critério de volta como JSON.
-
#documents ➤ Array<Document>
Obtenha os documentos a partir dos critérios incorporados.
-
#documents=(Docs) ➤ Array<Document>
Defina os documentos incorporados nos critérios.
-
#incorporado? ➤ verdadeiro | false
Os critérios são para documentos incorporados?
-
#empty_and_chainable? ➤ verdadeiro | false
Os critérios são um critério vazio, mas acorrentador?
-
#extract_id ➤ Objeto
Extraia um único ID dos critérios fornecidos.
-
#extras(extras) ⇒ Criteria
Adiciona um critério ao
Criteria
que especifica opções adicionais a serem passadas para o driver Ruby, no formato exato do driver. -
#field_list ➤ Array<String>
Obtenha a lista de campos incluídos.
-
#encontre(*args) {|Object| ... } ➤ Documento | Array<Document> | nada
Localiza um ou vários documentos de acordo com os valores _id fornecidos ou filtra os documentos no escopo atual no espaço do processo do aplicação depois de carregá-los, se necessário.
- #for_js(JavaScript, scope = {}) ➤ Critérios obsoleto Obsoleto.
-
#freeze ⇒ Criteria
Ao congelar um critério, precisamos inicializar o contexto primeiro, caso contrário, a configuração do contexto em uma tentativa de iteração gerará um erro de tempo de execução.
-
#initialize(klass) ⇒ Criteria
construtor
Inicialize os novos critérios.
-
#mesclar(outro) ➤ Critérios
Mescle outro objeto com este
Criteria
e retorna um novo critério. -
#merge!(outros) ➤ Critérios
Mesclar os outros critérios neste.
-
#none ⇒ Criteria
Retorna um critério que sempre conterá zero resultados e nunca atinge o banco de dados de dados.
-
#only(*args) ➤ Critérios
Substitua para incluir _type nos campos.
-
#read(value = nil) ➤ Critérios
Defina a preferência de leitura para os critérios.
-
#respond_to?(nome, include_private = false) ➤ true | false
Retorna verdadeiro se os critérios responderem ao método fornecido.
- #to_criteria ⇒ Criteria obsoleto Obsoleto.
-
#to_proc ⇒ Proc
Converta os critérios em um proc.
-
#type(tipos) ➤ Critérios
Adiciona um critério ao
Criteria
que especifica um tipo ou uma Array de tipos que devem ser correspondidos. -
#onde(*args) ➤ Critérios
Este é o ponto de entrada geral para a maioria das consultas MongoDB .
-
#sem(*args) ➤ Critérios
Substitua para excluir _id dos campos.
-
#sem_opções ➤ Critérios
Obtenha uma versão desses critérios sem as opções.
Métodos incluídos do Mongoid::Clients::Sessions
Métodos incluídos do Mongoid::Clients::Options
#collection, #collection_name, #mongo_client, #persistence_context, #persistence_context?, #com
Métodos incluídos no Scoped
#apply_default_scope, #apply_scope, #remove_scoping, #scoped, #scoped?, #scoping_options, #scoping_options=, #unscoped, #unscoped?, #with_default_scope
Métodos incluídos do Modificável
#build, #create, #create !, #create_with, #find_or_create_by, #find_or_create_by!, #find_or_initialize_by, #first_or_create, #first_or_create!, #first_or_initialize
Métodos incluídos noMarshable
Métodos incluídos de Includable
#includes, #incluses, #incluses=
Métodos incluídos no Findable
#execute_or_raise, #for_ids, #multiple_from_db
Métodos incluídos do Queryable::Optional
#ascending, #batch_size, #collation, #comment, #cursor_type, #descending, forwardables, #hint, #limit, #max_scan, #max_time_ms, #no_timeout, #order_by, #reorder, #skip, #slice, #snapshot
Métodos incluídos do Queryable::macroable
Métodos incluídos em Selectable
Métodos incluídos do Queryable::Aggregable
#aggregating?, #group, #project, #unwind
Métodos incluídos do Queryable::Mergeable
#and_with_operator, #intersect, #override, #reset_strategies!, # união
Métodos incluídos do Queryable::Storable
#add_field_expression, #add_logical_operator_expression, #add_one_expression, #add_operator_expression
Métodos incluídos do Contexto
Detalhes do construtor
#initialize(klass) ⇒ Criteria
Inicialize os novos critérios.
233 234 235 236 237 238 |
# Arquivo 'lib/mongoid/criteria.rb', linha 233 def inicializar(classe) @klass = classe @embedded = nada @none = nada classe ? super(classe.aliased_fields, classe.Campos, classe.relações, classe.aliased_associations) : super({}, {}, {}, {}) end |
Manipulação de métodos dinâmicos
Esta classe lida com métodos dinâmicos através do método method_missing
#method_missing ➤ Object (private)
Usado para encadear escopos Criteria
no for dos métodos de classe no Document
o qual os critérios são.
530 531 532 533 534 535 536 537 538 539 540 |
# Arquivo 'lib/mongoid/criteria.rb', linha 530 ruby2_keywords def method_missing(name, *Args, &noum: bloco ; verb: bloquear) se classe.respond_to?(name) classe.enviar(:with_scope, auto) fazer classe.enviar(name, *Args, &noum: bloco ; verb: bloquear) end elsif Verificar.respond_to?(name) Método entradas.enviar(name, *Args, &noum: bloco ; verb: bloquear) mais super end end |
Detalhes do atributo da instância
#associação ➤ Objeto
Retorna o valor da associação de atributo.
68 69 70 |
# Arquivo 'lib/mongoid/criteria.rb', linha 68 def associação @association end |
#Objeto ➤ incorporado
Retorna o valor do atributo incorporado.
68 69 70 |
# Arquivo 'lib/mongoid/criteria.rb', linha 68 def @embedded end |
#klass ⇒ Object
Retorna o valor do atributo klass.
68 69 70 |
# Arquivo 'lib/mongoid/criteria.rb', linha 68 def classe @klass end |
#parent_document ➤ Objeto
Retorna o valor do atributo parent_document.
68 69 70 |
# Arquivo 'lib/mongoid/criteria.rb', linha 68 def parent_document @parent_document end |
Detalhes do método de classe
.from_hash(hash) ➤ Critérios
Converta o hash fornecido em um critério. Irá iterar sobre cada chave no hash que deve corresponder ao método em um objeto de critérios . O hash também deve incluir uma chave "klass".
55 56 57 58 59 60 61 |
# Arquivo 'lib/mongoid/criteria.rb', linha 55 def from_hash(hash) critério = critério.Novo(hash.excluir(:klass) || hash.excluir('klass')) hash.cada_pair fazer |Método, Args| critério = critério.__send__(Método, Args) end critério end |
Detalhes do método de instância
#==(outro) ➤ verdadeiro | false
Isso forçará um carregamento de banco de dados de dados quando chamado se um enumerável for passado.
Retorna verdadeiro se o Enumerable
ou Criteria
fornecido for igual aos resultados deste Criteria
ou aos próprios critérios.
78 79 80 81 |
# Arquivo 'lib/mongoid/criteria.rb', linha 78 def ==(Outro) Método super se Outro.respond_to?(:selector) entradas == Outro end |
#_enumerable_find ⇒ Object
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.
26 |
# Arquivo 'lib/mongoid/criteria.rb', linha 26 Alias :_enumerable_find :find |
#_findable_find ➤ 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.
33 |
# Arquivo 'lib/mongoid/criteria.rb', linha 33 Alias :_findable_find :find |
#as_json(options = nil) ⇒ String
Necessário para obter corretamente um critério de volta como JSON
140 141 142 |
# Arquivo 'lib/mongoid/criteria.rb', linha 140 def as_json( = nada) entradas.as_json() end |
#documents ⇒ Array<Document>
Obtenha os documentos a partir dos critérios incorporados.
150 151 152 |
# Arquivo 'lib/mongoid/criteria.rb', linha 150 def documentos @documents ||= [] end |
#documents=(docs) ⇒ Array<Document>
Defina os documentos incorporados nos critérios.
161 162 163 |
# Arquivo 'lib/mongoid/criteria.rb', linha 161 def documentos=(Docs) @documents = Docs end |
#incorporado? ➤ verdadeiro | false
Os critérios são para documentos incorporados?
171 172 173 |
# Arquivo 'lib/mongoid/criteria.rb', linha 171 def !!@embedded end |
#empty_and_chainable? ➤ verdadeiro | false
O critério é um critério vazio, mas acorrentador?
301 302 303 |
# Arquivo 'lib/mongoid/criteria.rb', linha 301 def empty_and_chainable? !!@none end |
#extract_id ➤ Objeto
Extraia um único ID dos critérios fornecidos. Pode estar em uma query $and ou uma query _id direta.
182 183 184 |
# Arquivo 'lib/mongoid/criteria.rb', linha 182 def extract_id seletor['_id'] || seletor[:_id] || seletor['ID'] || seletor[:id] end |
#extras(extras) ⇒ Criteria
Adiciona um critério ao Criteria
que especifica opções adicionais a serem passadas para o driver Ruby, no formato exato do driver.
criteria.extras(:limit => 20, :skip => 40)
195 196 197 198 199 |
# Arquivo 'lib/mongoid/criteria.rb', linha 195 def Extras(Extras) crit = clonar crit..mesclar!(Extras) crit end |
#field_list ➤ Array<String>
Obtenha a lista de campos incluídos.
207 208 209 210 211 212 213 |
# Arquivo 'lib/mongoid/criteria.rb', linha 207 def field_list se [:fields] [:fields].keys.rejeitar{ |chave| chave == classe.discriminator_key } mais [] end end |
#find(*args) {|Object| ... } ⇒ Document | Array<Document> | nil
Cada argumento pode ser um ID individual, uma array de ids ou uma array agrupada. Cada array será achatada.
Localiza um ou vários documentos de acordo com os valores _id fornecidos ou filtra os documentos no escopo atual no espaço do processo do aplicação depois de carregá-los, se necessário.
Se este método não receber um bloco, ele delegará para Findable#find e localizará um ou muitos documentos para os valores de _id fornecidos.
Se esse método receber um bloco, ele delegará para Enumerable#find e retornará o primeiro documento daqueles encontrados pelo objeto Crieria atual para o qual o bloco retorna um valor verdadeiro.
Observe que o argumento "default proc" de Enumerable não é tratado especialmente pelo Mongoid - a decisão entre delegar para Findable
versus Enumerable
é feita somente com base no fato find
passar a um bloqueio.
124 125 126 127 128 129 130 |
# Arquivo 'lib/mongoid/criteria.rb', linha 124 def find(*Args, &noum: bloco ; verb: bloquear) se block_given? _enumerable_find(*Args, &noum: bloco ; verb: bloquear) mais _findable_find(*Args) end end |
#for_js(JavaScript, scope = {}) ➤ Critérios
Encontre documentos pelo JavaScript e escopo fornecidos. Usa um $where, mas é diferente de Criteria#where , pois passará um objeto de código para a query em vez de uma string pura. Seguro contra ataques de injeção de JavaScript .
466 467 468 469 470 471 472 473 474 |
# Arquivo 'lib/mongoid/criteria.rb', linha 466 def for_js(JavaScript, escopo = {}) código = se escopo.vazio? # CodeWithScope não é suportado para $where a partir do MongoDB 4.4 BSON::Código.Novo(JavaScript) mais BSON::CodeWithScope.Novo(JavaScript, escopo) end js_query(código) end |
#freeze ⇒ Criteria
Ao congelar um critério, precisamos inicializar o contexto primeiro, caso contrário, a configuração do contexto em uma tentativa de iteração gerará um erro de tempo de execução.
223 224 225 |
# Arquivo 'lib/mongoid/criteria.rb', linha 223 def congelar Contexto e a inclusões e a super end |
#mesclar(outro) ➤ Critérios
Mescle outro objeto com este Criteria
e retorna um novo critério. O outro objeto pode ser Criteria
ou Hash
. Isso é usado para combinar vários escopos, onde uma situação de escopo encadeado pode ser desejada.
260 261 262 263 264 |
# Arquivo 'lib/mongoid/criteria.rb', linha 260 def mesclar(Outro) crit = clonar crit.mesclar!(Outro) crit end |
#merge!(outros) ➤ Critérios
Mesclar os outros critérios neste.
274 275 276 277 278 279 280 281 282 |
# Arquivo 'lib/mongoid/criteria.rb', linha 274 def mesclar!(Outro) Outro = auto.classe.from_hash(Outro) se Outro.is_a?(Hash) seletor.mesclar!(Outro.seletor) .mesclar!(Outro.) auto.documentos = Outro.documentos.dup a menos que Outro.documentos.vazio? auto. = Outro. auto.inclusões = (inclusões + Outro.inclusões).uniq auto end |
#none ➤ Critérios
Retorna um critério que sempre conterá zero resultados e nunca atinge o banco de dados de dados.
291 292 293 |
# Arquivo 'lib/mongoid/criteria.rb', linha 291 def none @none = true e a auto end |
#only(*args) ➤ Critérios
Substitua para incluir _type nos campos.
313 314 315 316 317 318 319 320 321 322 323 |
# Arquivo 'lib/mongoid/criteria.rb', linha 313 def Apenas(*Args) Args = Args.achatar Método clonar se Args.vazio? se (Args & Campos::IDS).vazio? Args.unshift(:_id) end se classe.hereditário? Args.push(classe.discriminator_key.to_sym) end super(*Args) end |
#read(value = nil) ➤ Critérios
Defina a preferência de leitura para os critérios.
333 334 335 336 337 |
# Arquivo 'lib/mongoid/criteria.rb', linha 333 def ler(valor = nada) clonar.toque fazer |critério| critério..mesclar!(ler: valor) end end |
#respond_to?(nome, include_private = false) ➤ true | false
Retorna verdadeiro se os critérios responderem ao método fornecido.
361 362 363 |
# Arquivo 'lib/mongoid/criteria.rb', linha 361 def respond_to?(name, include_private = false) super || classe.respond_to?(name) || Verificar.respond_to?(name, include_private) end |
#to_criteria ⇒ Criteria
Conveniência para objetos que desejam ser mesclados em um critério.
374 375 376 |
# Arquivo 'lib/mongoid/criteria.rb', linha 374 def to_criteria auto end |
#to_proc ➤ Proc
Converta os critérios em um proc.
385 386 387 |
# Arquivo 'lib/mongoid/criteria.rb', linha 385 def to_proc ->{ auto } end |
#type(tipos) ➤ Critérios
Adiciona um critério ao Criteria
que especifica um tipo ou uma Array de tipos que devem ser correspondidos.
399 400 401 |
# Arquivo 'lib/mongoid/criteria.rb', linha 399 def type(Tipos) any_in(auto.discriminator_key.to_sym => Array(Tipos)) end |
#onde(*args) ➤ Critérios
Este é o ponto de entrada geral para a maioria das consultas MongoDB. Isso cria um campo padrão: seleção de valor e seleção expandida com o uso de métodos de hash ou uma seleção $where se uma string for fornecida.
420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 |
# Arquivo 'lib/mongoid/criteria.rb', linha 420 def ONDE(*Args) # Anteriormente, este método exigia exatamente um argumento. # A partir de https://jira.mongodb.org/browse/MONGOID-4804 ele também aceita # zero arguments. # A implementação subjacente onde o super invoca suporta # qualquer número de argumentos, mas atualmente não permitimos vários # argumentos através deste método. Essa API pode ser reconfigurada na # futuro. se Args.Tamanho > 1 aumentar ArgumentError, "Critérios#onde requer zero ou um argumento (dado #{args.comprimento})" end se Args.Tamanho == 1 expressão = Args.primeiro se expressão.is_a?(::String) && aumentar Errors::Javascript não suportado.Novo(classe, expressão) end end super end |
#sem(*args) ➤ Critérios
Substitua para excluir _id dos campos.
347 348 349 350 |
# Arquivo 'lib/mongoid/criteria.rb', linha 347 def sem(*Args) Args -= id_fields super(*Args) end |
#sem_opções ➤ Critérios
Obtenha uma versão desses critérios sem as opções.
446 447 448 449 450 |
# Arquivo 'lib/mongoid/criteria.rb', linha 446 def crit = clonar crit..Limpar crit end |