Módulo: Mongoid::Matcher Private
- Definido em:
- lib/mongoid/matcher.rb,
lib/mongoid/matcher/eq.rb,
lib/mongoid/matcher/gt.rb,
lib/mongoid/matcher/in.rb,
lib/mongoid/matcher/lt.rb,
lib/mongoid/matcher/ne.rb,
lib/mongoid/matcher/or.rb,
lib/mongoid/matcher/all.rb,
lib/mongoid/matcher/and.rb,
lib/mongoid/matcher/gte.rb,
lib/mongoid/matcher/lte.rb,
lib/mongoid/matcher/mod.rb,
lib/mongoid/matcher/nin.rb,
lib/mongoid/matcher/nor.rb,
lib/mongoid/matcher/not.rb,
lib/mongoid/matcher/bits.rb,
lib/mongoid/matcher/size.rb,
lib/mongoid/matcher/type.rb,
lib/mongoid/matcher/regex.rb,
lib/mongoid/matcher/exists.rb,
lib/mongoid/matcher/eq_impl.rb,
lib/mongoid/matcher/elem_match.rb,
lib/mongoid/matcher/ expressão.rb,
lib/mongoid/matcher/bits_all_set.rb,
lib/mongoid/matcher/bits_any_set.rb,
lib/mongoid/matcher/bits_all_clear.rb,
lib/mongoid/matcher/bits_any_clear.rb,
lib/mongoid/matcher/field_operator.rb,
lib/mongoid/matcher/field_expression.rb,
lib/mongoid/matcher/eq_impl_with_regexp.rb,
lib/mongoid/matcher/expression_operator.rb,
lib/mongoid/matcher/elem_match_expression.rb
Visão geral
Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.
Módulo utilitário que contém métodos que ajudam a realizar a correspondência de documentos na memória com expressões de query MQL .
Definido sob namespace
Módulos: Todos, E, Bits, BitsAllClear, BitsAllSet, BitsAnyClear, BitsAnySet, ElemMatch, ElemMatchExpression, Eq, EqImpl, EqImplWithRegexp, Exists, Expression, ExpressionOperator, FieldExpression, FieldOperator, Gt, Gte, In, Lt, Lte, Mod, Ne, Nin, Nem, Não ou, Regex, Tamanho, Tipo
Recolhimento do Resumo do método de classe
-
.extract_attribute(documento, chave) ➤ Objeto | Array
privado
Extrai valores de campo no documento na chave especificada.
-
.find_exact_key(hash, chave) ➤ string | Símbolo | nada
privado
Pesquisa independente de string ou chave de símbolo, retornando a chave exata.
Detalhes do método de classe
.extract_attribute(documento, chave) ➤ Objeto | Array
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.
Extrai valores de campo no documento na chave especificada.
O documento pode ser um Hash ou uma instância de modelo.
A chave é uma chave de notação de ponto MongoDB válida. Os seguintes casos de uso são compatíveis:
-
Traversal simples de campo ('foo') - recupera o campo `foo' no documento atual.
-
Hash/travessia do campo de documento incorporado ('foo.bar') - recupera o campo `foo' no documento atual e, em seguida, recupera o campo `bar' do valor de `foo'. Cada segmento de caminho pode descer em um documento incorporado ou um campo de hash .
-
Recuperação de elementos de array ('foo.N') - recupera o enésimo elemento de array do campo `foo', que deve ser uma array. N deve ser um número inteiro não negativo.
-
Array traversal ('foo.bar') - se `foo' for um campo de array e os elementos de `foo' forem hashes ou documentos incorporados, isso retornará uma array de valores do campo `bar' em cada um dos hashes na array `foo'.
Esse método pode retornar um valor de campo individual em algum documento ou uma array de valores de vários documentos. A array pode ser retornada porque um valor de campo no caminho especificado é uma array de valores primitivos (por exemplo inteiros) ou porque um valor de campo no caminho especificado é uma array de documentos (por exemplo, uma associação incorporada de um para muitos), caso em que o valor da folha pode ser um escalar para cada documento individual. Se o valor da folha for uma array e uma associação de um para muitos tiver sido atravessada, o valor de retorno será uma array de arrays. Observe que um valor de campo individual também pode ser uma array e esse caso é indistinguível e se comporta de forma idêntica à associação traversal para fins de, por exemplo, recuperação subsequente de elementos de array .
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# Arquivo 'lib/mongoid/matcher.rb', linha 46 module_function def extract_attribute(documento, chave) se documento.respond_to?(:as_attributes, true) # Se um documento tiver campos de hash, as_attributes manterá esses campos # como instâncias de Hash que não oferecem acesso indiferente. # Converta para BSON::Document para obter acesso indiferente em campos de hash. documento = documento.enviar(:as_attributes) end Current = [documento] chave.to_s.dividir('.').cada fazer |Campo| Novo = [] Current.cada fazer |doc| caso doc quando Hash actual_key = find_exact_key(doc, Campo) se !actual_key.nada? Novo << doc[actual_key] end quando Array se (index = Campo.to_i).to_s == Campo se doc.Tamanho > index Novo << doc[index] end end doc.cada fazer |subdoc| se Hash === subdoc actual_key = find_exact_key(subdoc, Campo) se !actual_key.nada? Novo << subdoc[actual_key] end end end end end Current = Novo intervalo se Current.vazio? end Current end |
.find_exact_key(hash, chave) ➤ string | Símbolo | nada
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.
Pesquisa independente de string ou chave de símbolo, retornando a chave exata.
94 95 96 97 98 99 100 |
# Arquivo 'lib/mongoid/matcher.rb', linha 94 module_function def find_exact_key(hash, chave) key_s = chave.to_s Método key_s se hash.chave?(key_s) key_sym = chave.to_sym hash.chave?(key_sym) ? key_sym : nada end |