Classificação: Mongoid::Criteria::Queryable::Key

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
lib/mongoid/criteria/queryable/key.rb

Visão geral

Os objetos-chave representam especificações para a criação de expressões de query utilizando seletores do MongoDB .

As condições simples de valor-chave são convertidas diretamente em hashes de expressão pelo Mongoid sem utilizar objetos-chave. Por exemplo, a seguinte condição:

Foo.where(price: 1)

... é traduzido para a seguinte expressão simples:

{price: 1}

Condições mais complexas começariam a envolver objetos Key. Por exemplo:

Foo.where(:price.gt => 1)

... faz com que uma instância de chave seja criada da seguinte forma:

Key.new(:price, :__override__, '$gt')

Esta instância de chave utiliza operator mas não expanded nem block. A expressão de query do MongoDB correspondente é:

{price: {'$gt' => 1}}

Um exemplo ainda mais complexo é a seguinte condição:

Foo.geo_spatial(:boundary.intersects_point => [1, 10])

O processamento desta condição fará com que uma instância de chave seja criada da seguinte forma:

Key.new(:location, :__override__, '$geoIntersects', '$geometry') do |value|
  { "type" => POINT, "coordinates" => value }
end

... eventualmente produzindo a seguinte expressão de query do MongoDB :

{

boundary: {
  '$geoIntersects' => {
    '$geometry' => {
      type: "Point" ,
      coordinates: [ 1, 10 ]
    }
  }
}

}

As instâncias de chave podem ser consideradas como procs que mapeiam um valor para a expressão de query do MongoDB necessária para obter a condição da chave, dado o valor.

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#inicializar(nome, estratégia, operador, expandido = nil, &bloco) ➤ Chave

Instancie a nova chave.

Exemplos:

Instanciar uma chave.

Key.new("age", :__override__, "$gt")

Instancie uma chave para classificação.

Key.new(:field, :__override__, 1)

Parâmetros:

  • name (string | Símbolo)

    O nome do campo .

  • estratégia (Símbolo)

    O nome da estratégia de mesclagem.

  • operador, operador (string | Inteiro)

    O operador do MongoDB ou a direção de classificação (1 ou -1).

  • Expandido (string) (padrão para: nil)

    O operador expandido mongo .



113
114
115
116
117
118
119
120
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 113

def inicializar(name, estratégia, operador, operador, Expandido = nada, &noum: bloco ; verb: bloquear)
  a menos que operador, operador.is_a?(String) || operador, operador.is_a?(Inteiro)
    aumentar ArgumentError, "O operador deve ser uma string ou um número inteiro: #{operator.inspect}"
  end

  @name, @strategy, @operator, @expanded, @block =
    name, estratégia, operador, operador, Expandido, noum: bloco ; verb: bloquear
end

Detalhes do atributo da instância

#blockProc (somente leitura)

Retorna O bloco opcional para transformar valores.

Retorna:

  • (Proc)

    O bloco opcional para transformar valores.



76
77
78
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 76

def noum: bloco ; verb: bloquear
  @block
end

# ➤expandida string (somente leitura)

Retorna o operador de query expandida MongoDB.

Retorna:

  • (string)

    O operador de query expandida do MongoDB .



70
71
72
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 70

def Expandido
  @expanded
end

#nomestring | Símbolo (somente leitura)

Retorna O nome do campo.

Retorna:

  • (string | Símbolo)

    O nome do campo.



64
65
66
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 64

def name
  @name
end

#operadorstring (somente leitura)

Retorna o operador de query MongoDB .

Retorna:

  • (string)

    O operador de query do MongoDB.



67
68
69
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 67

def operador, operador
  @operator
end

#estrategiaSímbolo (somente leitura)

Retorna o nome da estratégia de mesclagem.

Retorna:

  • (Símbolo)

    O nome da estratégia de mesclagem.



73
74
75
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 73

def estratégia
  @strategy
end

Detalhes do método de instância

#==(outro) ➤ verdadeiro | false Também conhecido como: eql?

A chave é igual a outro objeto?

Exemplos:

A chave é igual a outra?

key == other
key.eql? other

Parâmetros:

  • Outro (Objeto)

    O objeto com o qual comparar.

Retorna:

  • (verdadeiro | falso)

    Se os objetos forem iguais.



87
88
89
90
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 87

def ==(Outro)
  Método false a menos que Outro.is_a?(Chave)
  name == Outro.name && operador, operador == Outro.operador, operador && Expandido == Outro.Expandido
end

#__expr_part__(object, negating = false) ➤ Hash

Obtém o seletor bruto que seria passado para mongo a partir dessa chave.

Exemplos:

Especifique o seletor bruto.

key.__expr_part__(50)

Parâmetros:

  • objeto (Objeto)

    O valor a ser incluído.

  • negando (verdadeiro | falso) (padrão para: false)

    Se a seleção deve ser negada.

Retorna:

  • (Hash)

    O seletor bruto do MongoDB.



131
132
133
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 131

def __expr_part__(objeto, negando = false)
  { name.to_s => transform_value(objeto, negando) }
end

#__sort_option__ ➤ Hash Também conhecido como: __sort_pair__

Obtenha a chave como opções de classificação de mongo bruto.

Exemplos:

Obtenha a chave como uma classificação.

key.__sort_option__

Retorna:

  • (Hash)

    O par campo/direção.



170
171
172
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 170

def __sort_option__
  { name => operador, operador }
end

#hashinteiro

Calcule o código hash de uma chave.

Retorna:

  • (Inteiro)

    O código hash da chave.



96
97
98
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 96

def hash
  [name, operador, operador, Expandido].hash
end

#to_s ➤ string

Converta a chave em uma string.

Exemplos:

Converta a chave em uma string.

key.to_s

Retorna:

  • (string)

    A chave como uma string.



181
182
183
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 181

def to_s
  @name.to_s
end

#transform_value(valor, negação = falso) ➤ Hash

Obtém a condição do seletor bruto que seria passada para mongo.

Exemplos:

Obtém a condição do seletor bruto.

key.transform_value(50)

Parâmetros:

  • valor (Objeto)

    O valor a ser incluído.

  • negando (verdadeiro | falso) (padrão para: false)

    Se a seleção deve ser negada.

Retorna:

  • (Hash)

    O seletor bruto do MongoDB.



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 144

def transform_value(valor, negando = false)
  se noum: bloco ; verb: bloquear
    expr = noum: bloco ; verb: bloquear[valor]
  mais
    expr = valor
  end

  se Expandido
    expr = {Expandido => expr}
  end

  expr = {operador, operador => expr}

  se negando && operador, operador != '$not'
    expr = {'$not' => expr}
  end

  expr
end