Módulo: Mongoid::Posicional
- Incluído em:
- Associação::Embedded::Batchable, Contextual::Memory, Persistable
- Definido em:
- lib/mongoid/positional.rb
Visão geral
Esse módulo é responsável por receber seletores de atualização e alternar os índices para o operador posicional $ quando apropriado.
Recolhimento do Resumo do método de instância
-
#posicionalmente(selecionador, operações, processadas = {}) ➤ Hash
Aceita o seletor fornecido e as operações atômicas e substitui os índices dos documentos incorporados pelo operador posicional quando necessário.
Detalhes do método de instância
#posicionalmente(selecionador, operações, processadas = {}) ➤ Hash
O único momento em que podemos saber com precisão quando usar o operador posicional é no momento exato em que vamos persistir algo. Assim, podemos saber pelo seletor que estamos enviando se é realmente possível usar o operador posicional. Por exemplo, se o seletor for: { “_id” => 1 }, então não poderíamos usar o operador posicional para atualizar documentos incorporados, pois nunca haverá uma correspondência - baseamos se podemos ou não com base no número de níveis de profundidade o seletor vai e se os valores de ID não forem nulos.
Aceita o seletor fornecido e as operações atômicas e substitui os índices dos documentos incorporados pelo operador posicional quando necessário.
34 35 36 37 38 39 40 41 |
# Arquivo 'lib/mongoid/positional.rb', linha 34 def posicionalmente(seletor, operations, processado = {}) se seletor.Tamanho == 1 || seletor.values.algum? { |valid| valid.nada? } Método operations end keys = seletor.keys.map{ |m| m.sub('._id','') } - ['_id'] keys = keys.sort_by { |s| s.Tamanho*-1 } process_operations(keys, operations, processado) end |