Módulo: Mongoid::Positional
- Incluido en:
- Asociación::Incrustada::Agrupable, Contextual::Memoria, Persistente
- Definido en:
- lib/mongoid/positional.rb
Overview
Este módulo es responsable de tomar selectores de actualización y sustituir los índices por el operador posicional $ cuando sea apropiado.
Resumen del método de instancia colapsar
-
#posicionalmente(selector, operations, processed = {}) ⇒ Hash
Toma el selector y las operaciones atómicas proporcionados y reemplaza los índices de los documentos incrustados con el operador posicional cuando sea necesario.
Detalles del método de instancia
#posicionalmente(selector, operaciones, procesado = { }) ⇒ Hash
La única vez que podemos saber con precisión cuándo usar el operador posicional es en el momento exacto en que vamos a persistir algo. Por lo tanto, podemos saber por el selector que estamos enviando si realmente es posible usar el operador posicional en absoluto. Por ejemplo, si el selector es: { "_id" => 1 }, entonces no podríamos utilizar el operador posicional para actualizar los documentos incrustados ya que nunca habría una coincidencia; determinamos si es posible en función del número de niveles de profundidad a los que llega el selector y si los valores de ID no son nulos.
Toma el selector y las operaciones atómicas proporcionados y reemplaza los índices de los documentos incrustados con el operador posicional cuando sea necesario.
31 32 33 34 35 36 37 |
# Archivo 'lib/mongoid/positional.rb', línea 31 def posicionalmente(selector, Operaciones, procesado = {}) return Operaciones si selector.Tamaño == 1 || selector.values.any? { |val| val.nil? } claves = selector.claves.map { |m| m.sub('._id', '') } - [ '_id' ] claves = claves.ordenar_por { |s| s.longitud * -1 } process_operations(claves, Operaciones, procesado) end |